Javascript 将python客户端服务器转换为websocket
我创建了一个简单的echo服务器,并将其用于一个简单的web服务器示例 到目前为止,我拥有以下服务器: Server.pyJavascript 将python客户端服务器转换为websocket,javascript,python,html,websocket,Javascript,Python,Html,Websocket,我创建了一个简单的echo服务器,并将其用于一个简单的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 =
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
,我发现可以使用以下方法包装现有程序:
/websocify 2023——程序参数
如何使用上述命令在上一个服务器上运行当server.py在另一台机器上运行时,我是否可以在一台机器上运行websocify
?如果有的话。如何修改上述命令?
有人能提供一个简单的HTML5示例来告诉我client.html
应该是什么样子吗?请记住,我希望能够在没有原生websocket支持的浏览器上使用该示例。我认为websockify可以使用WebSocket js
实现这一点
它们声明:
它对二进制数据有透明的支持,并且如果浏览器本机不支持Websocket,它会自动回退到web套接字js Flash Websocket shim/polyfill
要与websockify交互,我建议您的客户端HTML/Javascript使用include/websock.js提供的库。与标准WebSocket有点不同
我刚刚在websockify存储库中插入了一个非常有用的代码
要在同一系统上包装server.py,您可以如下运行websockify:
./websockify --web ./ 21567 -- server.py
加载位于“”的简单客户端http://localhost:21567/tests/simple.html". 输入“ws://localhost:21567”作为websocket URI并点击connect。请注意,wrap模式使用重新绑定。因此,您必须构建一个将侦听端口移开的模式,以便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,如下所示:
./websockify --web ./ 21567 -- server.py
在192.168.1.7 launch 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服务器,那么您可以只使用WebSocket.py库而不使用完整的websockify功能,直接创建您的服务器。请参阅websockify附带的示例,它是一个简单的WebSocket echo服务器。再次感谢您提供了详尽的答案。你能澄清一下吗?如果我在
server1
上运行server.py
,在server2
上运行websocify
,我还需要重新绑定吗?我不这么认为。不,你只需要重新绑定。所以如果你在包装模式下使用它。另外,我忘了提到,如果您使用include/websock.js,它将为没有原生WebSocket支持的浏览器引入websocketjsflash仿真。您能提出一些建议吗?8:10.16.5.135:发送闪存策略响应9:10.16.5.135:纯非SSL(ws://)WebSocket连接9:10.16.5.135:Version hixie-76,base64:“True”
@salamis,该输出指示连接已打开。你能打开一个websockify以便我们能正确地跟踪它吗。此外,在此期间javascript控制台的任何输出都会很有帮助。