java - 为什么要使用 websocket,使用它有什么好处?

标签 java http websocket low-latency

我试着阅读了一些文章,但对这个主题不是很清楚。

有人愿意向我解释以下几点吗:

  • 为什么在 http 上使用 websocket
  • 什么是全双工通信
  • 低延迟交互是什么意思

最佳答案

Why use websocket over http?

webSocket 是客户端和服务器之间的持续连接。该连续连接允许以下操作:

  1. 数据可以随时从服务器发送到客户端,甚至不需要客户端请求。这通常称为服务器推送,对于客户端需要在服务器上发生某些事情(例如收到新的聊天消息或更新了新价格)时相当快地知道的应用程序非常有值(value)。客户端无法通过 http 推送数据。客户端必须通过每隔几秒发出一个 http 请求来定期轮询,以便及时获取新数据。客户端轮询效率不高。

  2. 可以非常有效地以任何一种方式发送数据。因为连接已经建立并且 webSocket 数据帧的组织非常有效(主要是 6 个额外字节,2 个字节用于 header ,4 个字节用于掩码),与通过必须包含 header 的 HTTP 请求相比,发送数据的效率要高得多, cookies 等...

what is full duplex communication?

全双工意味着数据可以随时在连接上以任何一种方式发送。

what do you mean by lower latency interaction

低延迟意味着您请求某项内容的时间与获得响应的时间之间的延迟非常小。由于它适用于 webSockets,它只是意味着可以更快地发送数据(特别是通过慢速链接),因为连接已经建立,因此不需要额外的数据包往返来建立 TCP 连接。

要比较通过 http 请求发送一些数据与已经建立的 webSocket 连接所涉及的内容,请参阅此答案中列出的步骤:websocket vs rest API for real time data?

这些其他引用资料也可能有用:

Server-push whenever a function is called: Ajax or WebSockets

For a push notification, is a websocket mandatory?

HTML5 WebSocket: A Quantum Leap in Scalability for the Web

关于java - 为什么要使用 websocket,使用它有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44898882/

相关文章:

java - 如何使用 JNDI 在 java 中强制执行 LDAP bindRequest?

java - struts2中DispatchAction类的替代方案

java - android中进度对话的时间限制

sockets - Go http.Get 什么时候重用 tcp 连接?

html - websockets 是搜索框的良好实现吗?

java - 错误做法 - 类定义 compareTo(...) 并使用 Object.equals()

http - HTTP "q"请求 header 中的 "Accept"值的用途是什么?

iphone - 安全网游http get/post请求(如何避免重复发送相同的http-req)

c# - SignalR ApplicationUserManager 在使用 webSockets 传输时被释放

javascript - 从浏览器发送 websocket ping/pong 帧