この問題を解決するためにかなり読んだことがありますが、まだ固執しています。私の問題は、socket.ioクライアント側とflask_socket.ioサーバー側を使用してwebsocketハンドシェイクを完了しようとすることです。Websocketは101(フラスコsocket.io)の代わりにステータス200を返す
app = Flask(__name__)
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
socketio = SocketIO(app)
socketio.run(app)
...
を、私はクロムを指している場合、localhostに:
私が使用して私のローカルマシン上でフラスコの開発サーバを実行することができ5000を、私はオープニングにリンクされているボタンを押してくださいWebSocketはうまく動作し、クロムネットワークのタブにはステータスが表示されます101.
しかし、コードをリモートマシンにアップロードし、フラスコの開発サーバーを使用してポートを80に変更すると、
socketio.run(app,host='0.0.0.0',port=80)
のWebSocketハンドシェイクが動作を停止し、代わりにステータス200を与えます。
'WS?://example.com/socket.io/ EIO = 3 &輸送=のWebSocket & SID = cfb1949b243b42578fe422782a0db359' へのWebSocket接続に失敗しました:エラーのWebSocketハンドシェイク中:予期しない応答コード:200
すべてのwebsocketメッセージは、websocketフレーム内ではなく、xhrポーリングで送信されます。
私はこれについてgoogle上で見つけることができますが、成功なしのすべてのガイドに従ってきました。以前はnginxとgunicornを使用していましたが、nginxのconfを変更してwebsocketにアップグレードできるようにアドバイスしたが問題は解決しなかった。だから私はフラスコ開発サーバーを使用することに簡素化したが、私はまだ成功した握手を得ることができていない。