我正在使用使用eventlet用Python編寫的一個服務器端的端點和用JavaScript編寫客戶端起始點的WebSockets:不能初始化併發WebSocket連接[eventlet,燒瓶,JavaScript的]
var ws = new WebSocket("ws://192.168.1.25:16081/some_url");
ws.onopen = function()
{
console.log("Transmitting " + data)
ws.send(data)
};
ws.onmessage = function (evt)
{
console.log(evt.data)
// Do stuff with evt.data
};
而且Python代碼:
import eventlet
eventlet.sleep()
from eventlet import wsgi
from eventlet import websocket
from eventlet.support import six
@websocket.WebSocketWSGI
def game_room(ws):
print(ws)
try:
while True:
time.sleep(1)
#Do stuff, some server-pushing
except Exception,e:
#Disconnect, do stuff
def dispatch(environ, start_response):
""" This resolves to the web page or the websocket depending on
the path."""
if environ['PATH_INFO'] == '/some_url':
return game_room(environ, start_response)
if __name__ == "__main__":
# run an example app from the command line
listener = eventlet.listen(('0.0.0.0', 16081))
wsgi.server(listener, dispatch, debug=True)
爲簡潔起見,我截斷了一些代碼。如果我使用JavaScript進入頁面,它可以正常工作。運行wsgi服務器的控制檯報告已通過客戶端計算機的正確IP進行連接。問題是,如果我使用手機導航到同一頁面,套接字不會報告任何內容。如果我關閉機器上的選項卡並重新加載套接字服務器,我可以連接手機。不知何故,它似乎無法處理併發連接。
我不知道從哪裏開始。運行服務器時可以編輯一些選項嗎?
此代碼將引發'NameError time is not defined'。 – temoto