我試圖使用Flask-Sockets與示例代碼:如何使用Flask-Sockets?得到一個KeyError異常:「wsgi.websocket」
sockets = Sockets(app)
@sockets.route('/echo')
def echo_socket(ws):
while True:
message = ws.receive()
ws.send(message)
不幸的是,當只是要在URL /回聲使用我的瀏覽器它給了我一個錯誤說:
File "/Library/Python/2.7/site-packages/Flask-0.10-py2.7.egg/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/flask_sockets.py", line 37, in __call__
environment = environ['wsgi.websocket']
KeyError: 'wsgi.websocket'
任何人有任何想法我做錯了什麼?歡迎所有提示!
[編輯] @jbub - 感謝您的提示!因此,我現在使用gunicorn而不是內置的dev-server。所以我開始使用gunicorn -k flask_sockets.worker -b 0.0.0.0:5000 main:app
。然後我將下面的代碼插入到我的views.py中,echo_test.html是您提供的代碼。當我現在訪問/ echo_test時,確實得到一個提示說「套接字關閉」。
sockets = Sockets(app)
@sockets.route('/echo')
def echo_socket(ws):
while True:
message = ws.receive()
ws.send(message)
@app.route('/echo_test', methods=['GET'])
def echo_test():
return render_template('echo_test.html')
但是,假設我的目標是有其獲取與從列表中隨機選擇其他值更新頁面上的字(從列表中隨機選擇)。你有任何提示,以實現這一目標?
您是否在任何http服務器後運行?你是否已經安裝了libevent,gevent和gevent-websocket? – jbub
@jbub - 我正在運行apache和Flask dev-server。但據我所知,他們沒有相互尊重。我從Flask服務器運行的所有其他內容都沒有問題。另外,我剛剛添加了問題,我只是通過瀏覽器訪問網址,我想這是正確的方法嗎?歡迎任何其他提示,因爲我相當絕望.. – kramer65
注意到其他人遇到這個問題。確保你的端口是正確的。在大多數情況下,端口應該是8000 NOT 5000. –