タグ

WebSocketとconnectionに関するslay-tのブックマーク (2)

  • nginxをWebSocketのリバースプロキシとして使う - the glue

    経緯 WebSocketを使ったアプリケーションを作ったが、ポートが80しか使えない nginxでどっちも80に流したい ポイント / はまり所 WebSocketのプロキシにはUpgradeヘッダ(HTTP 1.1)への対応が必要 Upgradeヘッダへの対応は nginx v1.3.13以降 参考: WebSocket proxying 厳しい条件から先に書く デフォルトだと30秒通信がないと切断される(!) nginxでリバースプロキシしているときだけ一定時間で接続が切れるので何かと思えば、 普通のHTTPの通信と同様に30秒(だったはず)通信がなかった場合はタイムアウトってことで自動でコネクションを切ってくれていたみたい。 ping/pongを30s以内にやればいいんだろうけど、とりあえず5分に設定。 config server { listen *:80 default_serv

    nginxをWebSocketのリバースプロキシとして使う - the glue
  • WebSocketsでの送信処理に関する注意点(CLOSINGステートとcloseイベントに関する疑問) - kazuhoのメモ置き場

    WebSocketsの接続状態には、CONNECTING / OPEN / CLOSING / CLOSEDのステートが定められている。 一方、CLOSING状態への遷移に対応するイベントは存在せず、CLOSE状態へ遷移した際にcloseイベントが発生するとされている。 つまり、「closeイベントが来るまでは送信できるぜー」ってなコードを書いてると、正常系なのにsend()で例外発生する可能性がある。 なので、面倒だけど、 if (ws.readyState == 1) { ws.send(...); }のようなガードを入れる必要がある*1。もしくは、ws.readyState == CLOSING 状態になったらcloseイベントのハンドラを呼び出すようなラッパーを書く必要がある。 と、以上の結論に至ったんですが、あってますでしょうか? >識者 以下、規格からの引用。 CONNECTI

    WebSocketsでの送信処理に関する注意点(CLOSINGステートとcloseイベントに関する疑問) - kazuhoのメモ置き場
  • 1