Socket.io被误解了[重复]

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

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

【讨论】:

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

以上是关于Socket.io被误解了[重复]的主要内容,如果未能解决你的问题,请参考以下文章

18. socket io

Socket.io - 客户端断开连接后手动重新连接

Socket.io 是聊天模块的理想选择吗

在多个节点上部署 socket.io 应用程序

如何使用 socket.io-p2p 在房间内建立对等连接?

Socket.io 移动到不同的域名后抛出 connect_error “服务器错误”