Raspberry Pi 構築 Web Socket編
Misskeyサーバーでの非同期の動作がうまくいかなかった
Misskeyサーバーを非同期で通信したいのだがリロードしないと投稿やスタンプが反映されない Webサイトで開発者モードを見てみるとWeb Socket Errorが発生している
なぜWebSocketが落ちているのか
Dockerを使ってリバースプロキシ経由でMisskeyサーバーを立てているため 該当の通信を行う先が異なっているためうまく処理が走らない事が原因だった
解決方法
まず、http_versionを1.1以降に変える
デフォルトでは1.0になるので明示的に設定しないといけない
「proxy_set_header Host」: ホスト情報をプロキシサーバのものではなく接続元のものに書き換える
「keep-alive」: webソケットに必要
「proxy_set_header Upgrade」: プロトコルスイッチという仕組みで通信プロトコルをHTTP/1.1からwebsocketに変更するらしい
「proxy_set_header Connection」: 送信先にコネクションを維持するか否かを伝えるためのヘッダーらしい
これらは1.1以降で利用可能なヘッダ設定でした
以下のようにSocket通信をしたいNginxファイルの元のコードに上記らを追記する
server {
listen 443;
server_name xxx.sample.com;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
location / {
proxy_pass http://jupyterlab:8888;
}
}