Сбой соединения с WebSocket при подключении через 3G на колбах и оружейном

Я написал небольшое приложение, которое использует WebSockets с использованием флеш-сокетов. В настоящее время я работаю с сайтом прямо из Gunicorn (используя Gevent Worker из колб), без nginx или чего-либо еще, потому что это всего лишь небольшой эксперимент. при попытке доступа к сайту на моем смартфоне при подключении к точке доступа сайт работает нормально. С другой стороны, при подключении через 3G сайт загружается, но соединение с веб-сокетом не выполняется.

Я получаю это в журнале сервера:

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 438, in handle_one_response
self.run_application()
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 424, in run_application
self.result = self.application(self.environ, self.start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask_sockets.py", line 37, in __call__
environment = environ['wsgi.websocket']
KeyError: 'wsgi.websocket'
<PyWSGIServer fileno=5 address=192.168.1.50:80>: Failed to handle request:
  request = GET /clock_skew HTTP/1.1 from ('80.246.130.25', 36438)
  application = <Flask 'flask_client_id.client_id'>

Я подумал, может быть, это как-то связано с прокси-серверами в середине, связанными с заголовками веб-сокетов, или с чем-то еще, поэтому я попытался изменить код JS на "wss://" на стороне клиента, но это не работает на все (ни один клиент не может установить соединение).

Я оценю любого, кто может дать мне какие-либо идеи по этому вопросу.

1 ответ

Это довольно частая проблема с операторами 3G (по крайней мере, в Европе).

Я предлагаю вам попробовать запустить ваш веб-сервер на порте, отличном от 80, лучше, если это будет порт для какой-либо известной службы (например, 443).

Другие вопросы по тегам