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的主要内容,如果未能解决你的问题,请参考以下文章
WebSocket 与 Ruby 和 EM::WebSocket::Server 握手
springboot2.1.3整合websocket和websocket-security支持跨域连接
有关多语言对WebSocket的支持情况和WebSocket和Socket的区别