我创建了一个简单的回显服务器,我想将其用于一个简单的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回显服务器。

07-24 16:10