2011-04-27 9 views
0

私はブラウザ用のWebソケット実装をしようとしています。 Firefox、Chromeは素晴らしいですが、IEで試してみるとソケットオブジェクトが作成されますが、タイマーは呼び出されません。web-socket.jsとWebSocket

WebSocket = function(url, protocol, proxyHost, proxyPort, headers) { 
var self = this; 
self.__id = WebSocket.__nextId++; 

WebSocket.__instances[self.__id] = self; 
self.readyState = WebSocket.CONNECTING; 
self.bufferedAmount = 0; 
self.__events = {}; 

// Uses setTimeout() to make sure __createFlash() runs after the caller sets ws.onopen etc. 
// Otherwise, when onopen fires immediately, onopen is called before it is set. 
setTimeout(function() { 
    WebSocket.__addTask(function() { 
     WebSocket.__flash.create(
      self.__id, url, protocol, proxyHost || null, proxyPort || 0, headers || null); 
     }); 
    }, 0); 
}; 

どのような理由が考えられますか?

答えて

0

どのバージョンのIEについてお話していますか? どのwebsocketライブラリを使用していますか?

Webソケットは、IEの旧バージョンではサポートされていません。 Google Chromeの4か:それは上動作するはず

https://github.com/gimite/web-socket-js これは、ドキュメントに記載されているだ:私はあなたがこれを使用している場合

...あなたがそれらの古いブラウザのために長いポーリングの代わりに、WebSocketをを使用する必要があると思います 後にFirefox 3.xを、4.xでは、+ Flash PlayerののInternet Explorer 8、9を(ちょうどネイティブ 実装を使用しています)以降は、あるいはサファリ、オペラ またはIE 6など 他のブラウザでは動作しない場合がありますこれらのブラウザのパッチは ですが、私はしませんork この特定の ブラウザに固有の問題を修正しました。

+0

私はIE8 + Flash Player 10.2を使用しています。理想的には、setTimeout内のこの関数が呼び出されているはずです。ブレークポイントを置くとヒットしません。 – user705737

+0

私はそれに閉じ込めていると思います。私は、JSはフラッシュを呼び出して有効なWebSocketを与え、フラッシュはポリシーファイルのためにポート846に私のwebsocketサーバーのIPを要求します。それを取得していないので、有効なWebSocketオブジェクトを取得していません。どのようにこのポリシーファイルをフラッシュするのに役立つかの例はありますか? – user705737

+0

ここをクリックしてください:http://www.lightsphere.com/dev/articles/flash_socket_policy.html – dwarfy