web-socket.js 和 WebSocket

Posted

技术标签:

【中文标题】web-socket.js 和 WebSocket【英文标题】:web-socket.js and WebSocket 【发布时间】:2011-04-27 09:41:22 【问题描述】:

我正在尝试为浏览器做一个网络套接字实现。 Firefox、Chrome 运行良好,但是当我在 IE 中尝试时,它会创建套接字对象但从不调用计时器。

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);
;

可能是什么原因?

【问题讨论】:

【参考方案1】:

你说的是哪个版本的IE? 你用的是什么 websocket 库?

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

如果你使用这个:https://github.com/gimite/web-socket-js 它在文档中说明:

它应该适用于:Google Chrome 4 或 稍后(仅使用本机 实施)Firefox 3.x、4.x、 Internet Explorer 8、9 + Flash 播放器 10 或更高版本它可能会或可能不会在 其他浏览器,如 Safari、Opera 或 IE 6. 这些浏览器的补丁是 赞赏,但我不会继续工作 解决特定于这些的问题 自己浏览器。

【讨论】:

谢谢,我使用的是 IE8 + flash player 10.2。理想情况下,应该调用 setTimeout 中的这个函数,当我放置断点时,它不会被命中! 我想我正在接近它。我猜 JS 调用 flash 是为了给它一个有效的 WebSocket,并且 flash 会在端口 846 上向我的 websocket 服务器 ip 询问策略文件。因为它没有得到那个,它没有得到一个有效的 WebSocket 对象。是否有任何示例如何将此策略文件提供给闪存? 看看这里:lightsphere.com/dev/articles/flash_socket_policy.html 我写了一个简单的程序来监听 843 端口来查看来自客户端的内容,我什至没有连接! flash player的调试版如何调试?

以上是关于web-socket.js 和 WebSocket的主要内容,如果未能解决你的问题,请参考以下文章

webrtc和websocket的区别

WebSocket 与 Ruby 和 EM::WebSocket::Server 握手

springboot2.1.3整合websocket和websocket-security支持跨域连接

有关多语言对WebSocket的支持情况和WebSocket和Socket的区别

websocket 和 websocket-client,如何同时使用?

如何在特定网站上找到 websocket 和 websocket url?