【问题标题】:Socket.io misunderstood [duplicate]Socket.io被误解了[重复]
【发布时间】:2016-12-03 07:42:45
【问题描述】:

Socket.io 是如何真正工作的?我下载了一个简单的节点聊天应用程序来检查它,并在谷歌浏览器的网络选项卡下检查了 HTTP 请求。对于聊天的正确更新,只能假设我在客户端的 javascript 将不断发送 http 请求,检查是否有任何更新聊天,但它没有显示任何已发送的请求,但仍然 - 当我发送另一个标签上的消息我可以在我的标签上看到更新。

https://github.com/lcristianiim/chat-app

我也很想了解 sockets.io 的基础知识,例如一旦用户断开连接会发生什么? 谢谢!

【问题讨论】:

  • 标题看起来一样,但问题不同。我查看了您发送的内容,他们讨论了我也询问过的事件,但最重要的是,我想了解更新系统的工作原理,这未包含在您发送的链接中。
  • 问题其实差不多。您真的应该阅读那里的 cmets,您所问的所有问题的答案都可以在该问题的页面上找到。

标签: javascript node.js sockets


【解决方案1】:

它使用WebSockets 作为底层主要技术。如果您想在开发者控制台中查看那些垃圾邮件 long-polling 请求,您可以选择禁用 WebSockets 作为其默认传输方式。

【讨论】:

  • 哦,所以他们只是用一种方式来掩盖“垃圾邮件”?在现实中,实际上有不间断的 http 请求发送请求更新?
  • @user1938653 没有。 WebSocket 本质上是不同的,因为它们提供了在发送数据结束时关闭的普通 HTTP 请求的替代方案。相反,WebSockets 在单个 HTTP 请求上保持一个开放的实时连接,客户端和服务器都可以随时通过该连接发送数据。它比 websocket 出现之前的旧的长轮询技术效率更高。
  • 当我说你可以禁用传输时,我的意思是 socket.io 使用多种后备技术,以防使用该库的特定浏览器不支持更现代、更高效的技术,如 websockets或闪光灯插座。这就是它如此受欢迎的原因,因为它将几个不同的层抽象成一个简单的 API。
  • 感谢您的帮助,为它点赞。顺便提一句;客户端是否只等待(待定)进一步响应,这可能是什么? (对象、数组等)。
  • @user1938653 socket.io 可以发送任何可序列化的内容。并且客户端和服务器都通过套接字连接“等待”对方的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 2018-08-19
  • 2017-11-19
相关资源
最近更新 更多