フラスコソケットを使用して WebSocket を使用する小さなアプリを作成しました。私は現在、小さな実験であるため、前もってnginxなどを使用せずに、gunicornから直接サイトを提供しています(フラスコソケットのgeventワーカーを使用)。アクセスポイントに接続した状態でスマートフォンからサイトにアクセスしようとすると、サイトは正常に動作します。一方、3G で接続すると、サイトはロードされますが、websocket 接続は失敗します。
サーバーログでこれを取得します:
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'>
途中でプロキシサーバーがWebソケットのヘッダーをいじったりとか関係があるのではないかと思ったので、クライアント側でJSコードを「wss://」に変えてみたのですが、うまくいきませんall (どのクライアントも接続を確立できません)。
これに関するアイデアを提供してくれる人に感謝します。