Web-Socket

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web-Socket相关的知识,希望对你有一定的参考价值。

参考技术A Web Socket 是 html5 的新协议,允许服务器端向客户端发送数据,是一种全双工、双向的通信方式,并且它可以保持长时间通信。

长时间通信:类比 HTTP 协议是一次请求,一次响应,两次请求之间不存在任何关系,除非加入 cookie 保存信息。而 Web Socket 只需要一次请求,接下来一直处于同一个连接状态进行通讯。

Web Socket 通信过程:首先使用 HTTP 协议进行握手初始化连接,服务器响应后,连接使用 Upgrade 头部字段将 HTTP 协议切换到 Web Socket 协议。之后就可以在一次连接中一直保持通信,而不需要像 HTTP 协议,不断的请求-响应、请求-响应......

Web Socket 特点:

1.http存在的问题

2.long poll(长轮询)

总的来看:

3.Ajax轮询

https://github.com/zaphoyd/websocketpp

web-socket.js 和 WebSocket

【中文标题】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的主要内容,如果未能解决你的问题,请参考以下文章