weblogこの広告は、90日以上更新していないブログに表示しています。2013-04-06SilentCloseに対する対応についてWebSocket概要WebSocketを利用した場合、長時間接続していると知らない内に接続がきれていることがあります。詳細はこのあたりが詳しいです。僕の環境でもSilentCloseに多分なったので事象と対応をまとめておこうと思います。SilentCloseがおこるとどうなるかSilentCloseが発生した場合、上記のリンクにもありますが以下のようなことが発生します。oncloseも発生しないサーバ側でnetstatすると接続はESTABLISHEDになっているSilentCloseの問題点これが発生すると実際にメッセージの送受信ができないこと以外はすべて正常だと認識されます。僕の環境だとサーバからメッセージを送ってもなにもエラーが発生しませんでした。実際にメッセージが送れなくなってからメッセージはおくれない、システムは気づけないという大きな問題が発生してしまいます。解決するか上記のリンクを参考にすると以下のような解決策があるようです。一定時間で接続をリセットする定期的にPing-Pongリクエストのやり取りを行う接続をリセットする場合ある一定時間で接続がきれてから再接続するまでメッセージの送受信ができないのが難点です。どのNATやFireWallがすべて同一の時間できってくれるならいいですが一概にもそうはいえないのかと思います。)ということで僕の環境では定期的にPing-Pongで実装するようにしました。小松さんの発言の通りkeep-aliveで解消されてJavaScriptレベルで意識しなくてよくなるのが一番ですね。実装したかまずは、Client側でPing-Pong管理の配列を用意します。[];次にOnOpenの際に定期的にメッセージ送受信するsetIntervalを定義します。実際にやりたいOnOpen処理};最後にOnMessageでPingのレスポンスを処理する。社内でWebSocketに関する勉強会をやってきました。昨日からnode.js+socket.ioでチャットアプリを作り出しました。2.2.0RC1をインストールしてみる本家のサイトに書いていますが備忘録的に残しておきます。月別アーカイブはてなブログをはじめよう!POCHI_BLACKさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。