たった数行でGoogle Chrome 14にしか対応していないWebSocketページをFirefox 7に対応させるJavaScript
スポンサードリンク
前、別の書き方で書いたけれども、今回はより互換性がある形で。
    <script type="text/javascript">
    // WebSocketの書き方の違いを吸収するオブジェクト
    if (typeof WebSocket == 'undefined' ) {
      if (typeof MozWebSocket != 'undefined' ) {
        WebSocket = MozWebSocket;
      }
    }
    </script>
- WebSocketオブジェクトがある場合は、何もしません。
 - WebSocketオブジェクトがなく、MozWebSocketオブジェクトが場合は、WebSocketオブジェクトを作り、MozWebSocketオブジェクトと同じにします。
 - WebSocketオブジェクトがなく、MozWebSocketオブジェクトもないは、何もしません。
 
これによって、Firefoxなど、MozWebSocketオブジェクトがあるがWebSocketオブジェクトがないブラウザでも、いつも通り var ws = new WebSocket('ws://example.com/ws'); でWebSocketが使えるようになります。
また、Firefox 7は、Google Chrome 14と同じ、WebSocketプロトコルがdraft hybi-10となっているので、Google ChromeでWebSocket接続ができるサーバであれば、Firefox 7でも接続できる可能性が高いです。
WebSocketオブジェクトについては、
- そもそもWebSocketオブジェクトがない(IE 8)
 - WebSocketオブジェクトがないがMozWebSocketオブジェクトがある(Firefox 7や8)
 - WebSocketオブジェクトがある(設定いじったOpera11、Safari)
 
というパターンわけがされて、
WebSocket接続については、
- そもそもWebSocketで接続できない(IE 8)
 - WebSocketオブジェクトで接続を試みて成功(サーバとプロトコルが合致)
 - WebSocketオブジェクトで接続を試みて失敗(サーバとプロトコルが不整合)
 
というパターンわけがされます。
特に、「WebSocketオブジェクトで接続を試みて失敗」するパターンでは、オブジェクトをnew出来るけれども、ws.onopenを経由せずにws.oncloseがコールバックされる、という流れになります。
ws.oncloseは、タイムアウトや、回線断でも呼ばれますので、ユーザーに対して、どのような理由で接続できなかったかを提示できるよう、処理には充分注意する必要があります。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3767





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)

              
コメントする