2013-10-03 47 views

回答

12

WebSocket是HTTP的扩展。对于低延迟通信,Web套接字更好。

还要检查这个article

如何的WebSockets让它如此之快?

为了建立WebSocket连接,它们的初始握手期间从HTTP协议WebSocket协议客户端和服务器的升级,如下面的例子所示: -

GET /text HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: www.websocket.org 

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
… 

一旦建立,WebSocket数据帧就可以在客户端和客户端之间来回发送e服务器处于全双工模式。文本帧和二进制帧都可以同时以任何方向全双工发送。数据只用两个字节进行最小化。在文本框架的情况下,每个帧以0x00字节开始,以0xFF字节结束,并且包含两者之间的UTF-8数据。 WebSocket文本框架使用终结符,而二进制框架使用长度前缀。

网络套接字代表的网络通信,一个 全双工,通过在Web上单插槽工作 双向通信信道的下一个演进。 HTML5 Web套接字提供了一个 真正的标准,您可以使用它来构建可伸缩的实时Web应用程序。另外,由于它向浏览器提供了原生 的套接字,因此它消除了Comet解决方案容易出现的许多问题。 Web套接字消除了开销并显着降低了复杂性。

潜伏期比较: -

enter image description here

摘要: -

网络套接字提供的 的实时网络扩展性前进了一大步。正如您在本文中看到的,HTML5 Web Sockets 可以提供500:1或 - 取决于HTTP标头的大小 - 甚至可以减少不必要的HTTP标头通信量的1000:1,并减少等待时间的3:1 。这不仅仅是一个渐进式的改进; 这是一次革命性的跳跃 - 一次飞跃!

+1

websockets的不足之处在于它们不遵循HTTP请求/响应的协议,如SPDY和即将到来的HTTP/2。0在很多人眼里,因为他们提供了许多相同的好处,但仍保留该语义更具吸引力(现货例如上的差异的,所以从我+1拉胡尔) –

+0

@jessemcconnell: - 非常漂亮点爵士!尽管Web Sockets协议已准备好支持多种客户端,但它还不能将原始二进制数据提交给JavaScript,因为JavaScript不支持字节类型,所以还要从同一链接添加一个点。因此,如果客户端是JavaScript,二进制数据将被忽略 - 但它可以传送给支持它的其他客户端。 –

+0

而我们的话题,自“彗星”是在对问题的标签,我一般建议使用类似直接cometd.org您的通信总线,而不是说的WebSockets,因为它可以自动选择基于最佳方案是什么浏览器和服务器支持,HTTP/2,SPDY,WS,HTTP/1.1长轮询,即使HTTP/1.0轮询和重新连接的支持也层,确保消息顺序,等等等等 –