Я пытаюсь использовать 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'
У кого-нибудь есть идеи, что я делаю неправильно? Все советы приветствуются!
[EDIT] @jbub - Спасибо за советы! Поэтому для начала я теперь использую gunicorn вместо встроенного dev-сервера. Поэтому я начал с gunicorn -k flask_sockets.worker -b 0.0.0.0:5000 main:app
. Затем я вставил код ниже в мои view.py i, где 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 и Dev-сервера Flask. Но, насколько я знаю, они не попадают друг в друга. Все другие вещи, которые я запускаю с сервера Flask, не имеют проблем. Кроме того, я просто добавил к вопросу, что я просто посещаю URL-адрес с моим браузером, я полагаю, что это способ начать правильно? Любые другие советы приветствуются, так как я довольно отчаянный. – kramer65
Примечание для других людей, столкнувшихся с этой проблемой. Убедитесь, что ваш порт правильно. В большинстве случаев порт должен быть 8000 NOT 5000. –