2011-04-27 64 views
0

我想为浏览器做一个web socket实现。 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库?

老版本的IE不支持Web套接字。我认为你需要使用长轮询的WebSockets,而不是为那些旧的浏览器...

如果使用此您:https://github.com/gimite/web-socket-js 它在文件中指出:

它可以工作在:谷歌Chrome浏览器4或 后来(只使用本地 实现)的Firefox 3.x,4.x版, 的Internet Explorer 8,9 + Flash播放器 10或更高版本这可能会或可能不会在其他 浏览器如Safari,Opera或 或IE 6的工作。补丁这些浏览器 赞赏,但我不会w请致电 自行解决特定于这些 浏览器的问题。

+0

谢谢,我使用IE8 + Flash Player 10.2。理想情况下,setTimeout中的这个函数应该被调用,当我放置一个断点时,它不会被击中! – user705737 2011-04-27 10:14:16

+0

我想我正在接近它。我猜JS调用闪光灯给它一个有效的WebSocket,并且闪存在端口846上向我的websocket服务器ip询问策略文件。因为它没有得到,它没有得到一个有效的WebSocket对象。有什么例子如何服务这个政策文件闪光? – user705737 2011-04-27 10:51:01

+0

看看这里:http://www.lightsphere.com/dev/articles/flash_socket_policy.html – dwarfy 2011-04-27 10:53:03