这更像是一个n00b问题,但我从未真正知道答案。
那么为什么我们需要websockets协议?
并且,与彗星式/长轮询/挂式GET式HTTP的使用有什么优势?
答案 0 :(得分:18)
Comet和Ajax都可以提供最终用户体验,提供类似桌面的功能和低用户感知的延迟,只有Web套接字能够提供本地方法,以准确有效地将事件传入和传出浏览器延迟可忽略不计。
通过轮询,它会产生不必要的请求,因此,在低消息速率情况下会不必要地打开和关闭许多连接。(与轮询一样,它会定期发送HTTP请求并立即收到响应。)
Web套接字消除了开销,并大大降低了复杂性。
答案 1 :(得分:11)
1-WebSocket是一种天然的全双工, 双向,单插座连接。使用WebSocket,您的HTTP请求变为 单个请求打开WebSocket连接并重用相同的连接 从客户端到服务器,从服务器到客户端。
2-WebSocket减少了延迟。例如,与民意不同, WebSocket只发出一个请求。服务器不需要等待来自的请求 客户端。同样,客户端可以随时向服务器发送消息。这个单身 请求大大减少了轮询的延迟,轮询会定期发送请求,无论如何 消息是否可用。
3-WebSocket使实时通信更加高效。 您始终可以通过HTTP使用轮询(有时甚至是流式传输)来接收 通过HTTP通知。但是,WebSocket可以节省带宽,CPU功耗和延迟。 WebSocket是一项性能创新。
4-WebSocket是一种底层网络协议,可用于构建其他标准 最重要的协议。
5-WebSocket是为HTML5应用程序提供高级功能的努力的一部分 为了与其他平台竞争。
6-WebSocket是关于Simplicity的
答案 2 :(得分:2)
这是一篇关于在{websocket.org
上进行民意调查的benefits of websocket的文章答案 3 :(得分:0)
我们确实需要它们并不清楚。在将事件推送到客户端的场景中,页面可以在循环中生成普通的AJAX GET请求,并且服务器可以“挂起”直到事件可用。经过一些超时后,服务器可以返回“无事件”响应,以便客户端重新连接。在连接打开且客户端正在等待响应的期间,有一个从服务器返回客户端的有效推送通道。
可以调整超时时间以减少不必要的重新连接,尽管它通常不会是无限的,因为大多数服务器框架如果看起来已经挂起太长时间就会终止服务器端进程。
鉴于这种现有能力,问题是:新的通信框架是否真的在已经可以做的事情上增加了重要的价值?它不会真正实现无法完成的事情。它只会略微改善它。