我创建了一个简单的回显服务器,我想将其用于一个简单的Web服务器示例。
到目前为止,我拥有服务器:
Server.py
from socket import *
import threading
import thread
def handler(clientsock,addr):
while 1:
data = clientsock.recv(BUFSIZ)
if not data:
break
msg = 'echoed:... ' + data
clientsock.send(msg)
clientsock.close()
if __name__=='__main__':
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
serversock = socket(AF_INET, SOCK_STREAM)
serversock.bind(ADDR)
serversock.listen(2)
while 1:
print 'waiting for connection...'
clientsock, addr = serversock.accept()
print '...connected from:', addr
thread.start_new_thread(handler, (clientsock, addr))
我想使用
websockify
,我发现它可以使用以下方法包装现有程序:./websockify 2023 -- PROGRAM ARGS
如何使用上述命令运行先前的服务器?当server.py在另一台计算机上运行时,是否可以在一台计算机上运行
websockify
?如是。如何修改以上命令?有人可以提供一个简单的HTML5示例向我展示
client.html
的外观吗?请记住,我希望能够将示例与不支持本机websocket的浏览器一起使用。我认为websockify可以使用web-socket-js
做到这一点。他们说:
It has transparent support for binary data and has automatic fallback to the web-socket-js Flash Websocket shim/polyfill if the browser does not support WebSockets natively
最佳答案
为了与websockify交互,我建议您客户端HTML / Javascript使用include / websock.js提供的库。 websock.js API与标准WebSockets有所不同。
我只是将非常simple HTML client page推入了websockify存储库。
要将server.py包装在同一系统上,应运行websockify,如下所示:
./websockify --web ./ 21567 -- server.py
在“ http:// localhost:21567 / tests / simple.html”处加载简单客户端。输入“ ws:// localhost:21567”作为websocket URI,然后单击connect。请注意,包装模式使用rebind.so,因此您必须进行构建,以将侦听端口移开,以便websockify可以为您插入。
您也可以在同一系统上分别运行websockify:
./server.py
./websockify --web ./ 6080 localhost:21567
在这种情况下,您将浏览到“ http:// localhost:6080 / tests / simple.html”,并使用“ ws:// localhost:6080”作为要连接的URI。
如果要在运行server.py的计算机上运行另一台计算机上的websockify,则需要更改server.py以在公共接口上侦听,而不仅仅是“ localhost”。进行更改后,如果server.py在192.168.1.7上运行,则可以在192.168.1.5上运行websockify,如下所示:
在192.168.1.7上启动server.py:
./server.py
在192.168.1.5上启动websockify并将其指向另一个系统上的server.py:
./websockify --web ./ 6080 192.168.1.7:21567
然后,您将浏览到“ http://192.168.1.5:6080/tests/simple.html”,并使用URI“ ws://192.168.1.5:6080”。
或者,如果您只是想让服务器成为WebSocket服务器,那么就可以使用没有完整websockify功能的websocket.py库,直接制作服务器。请参阅websockify附带的tests/echo.py示例,它是一个简单的WebSocket回显服务器。