Sto cercando di utilizzare Flask-Sockets con il codice di esempio:Come usare le boccette? Ottenere un KeyError: 'wsgi.websocket'
sockets = Sockets(app)
@sockets.route('/echo')
def echo_socket(ws):
while True:
message = ws.receive()
ws.send(message)
Purtroppo, quando semplicemente andando all'URL/eco usando il mio browser mi dà un errore che dice:
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'
Qualcuno ha qualche idea su cosa sto facendo male? Tutti i suggerimenti sono ben accetti!
[EDIT] @jbub - Grazie per i suggerimenti! Quindi per iniziare ora uso gunicorn invece del dev-server integrato. Così l'ho iniziato usando gunicorn -k flask_sockets.worker -b 0.0.0.0:5000 main:app
. Ho quindi inserito il codice qui sotto nel mio views.py in cui echo_test.html è il codice che hai fornito. Quando visito/echo_test, in effetti ricevo un prompt che dice "socket closed".
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')
Ma diciamo che il mio obiettivo è quello di avere una parola (scelto a caso da una lista) su una pagina che viene aggiornata con altri valori scelti a caso dalla lista. Avresti qualche consiglio per raggiungerlo?
Sei in esecuzione dietro qualsiasi server http? Avete installato libevent, gevent e gevent-websocket? – jbub
@jbub - Sto eseguendo sia apache che il server di sviluppo di Flask. Ma per quanto ne so, non si mettono a vicenda. Tutte le altre cose che ho eseguito dal server Flask non hanno problemi. Inoltre, ho appena aggiunto alla domanda che sto semplicemente visitando l'url con il mio browser, suppongo che sia il modo di iniziare correttamente? Qualsiasi altro suggerimento è benvenuto dato che sono piuttosto disperato .. – kramer65
Nota per altre persone che si imbattono in questo problema. Assicurati che la tua porta sia corretta. Nella maggior parte dei casi la porta dovrebbe essere 8000 NOT 5000. –