使用 Socket.IO 的主要场景是啥

Posted

技术标签:

【中文标题】使用 Socket.IO 的主要场景是啥【英文标题】:What is the major scenario to use Socket.IO使用 Socket.IO 的主要场景是什么 【发布时间】:2013-09-06 09:10:38 【问题描述】:

我只是想知道为什么以及我们需要Socket.IO 的应用程序或案例。

我是一个知名开源项目socket.IO-objc的ios开发者

通常,我们需要 HTTP 或 HTTPS 来与服务器通信。套接字旨在进行实时通信(它应该始终保持实时 HTTP 连接。)

【问题讨论】:

Socket.IO 是 NodeJS 之上的一个非常好的“样板”。它在可用时使用 websockets,如果不可用,它有一些备份方法。它可以帮助您编写更少的代码,在所有浏览器中都可以使用。 【参考方案1】:

当我们需要在我们的应用程序中实现实时时,需要像 socket.IO 这样的库。让我更详细地解释一下。假设您正在开发一款多人游戏,并且 2 个或更多用户可以同时玩该游戏。那么,在这种情况下,您将不会进行 HTTP 或 HTTPS 调用,原因有很多,其中一个是它们的数据包大小很大,另一个是这些调用非常慢。在这种情况下,我们使用诸如套接字之类的库来向服务器发送和接收数据。套接字真的很快,并且能够只发送那些需要的数据包。使用 HTTP 编程,您永远无法创建任何多人游戏或任何将与服务器实时交互的应用程序。

让我们再举一个例子。假设您正在开发一个聊天应用程序。当用户 A 正在键入内容时,用户 B 应该知道 A 正在键入(类似于 facebook messenger 的 gtalk)。如果您在那个时间点使用 HTTP 调用,那么“B”将由于延迟而永远无法看到其他人的实际状态。所以我们可以使用套接字,这样当用户 A 键入任何内容时,他的设备将只发送一个数据包,该数据包只会通知服务器他正在键入并将传递给用户 B,这个过程非常快(几乎是实时的) 并且还会减少数据传输。

【讨论】:

需要注意的是,这在没有 Socket.IO 的情况下也是可行的。现代浏览器支持 Websocket。 Socket.IO 将使用这些,并且可以在需要时回退到 FlashSockets。【参考方案2】:

我也在使用 socket.io 开发聊天应用程序。所以它似乎用socket.io替换了一切。这让我感到怀疑和好奇。我完全同意 socket.io 的聊天套装之类的实时应用程序。但是有更适合 HTTP 的往返通信(例如用户登录)。

【讨论】:

【参考方案3】:

Socket.io 使用 web socket 在所有连接到 web 服务器的用户之间传递数据。使用 Web 套接字,只要相关用户正在向 Web 服务器注册服务,就没有协商协议,并且连接保持打开状态。正如还指出的那样,有效负载明显小于 http/https 协议。

【讨论】:

【参考方案4】:

Socket.IO 是一个用于实时 Web 应用程序的 javascript 库。它支持 Web 客户端和服务器之间的实时双向通信。它有两个部分:在浏览器中运行的客户端库和 node.js 的服务器端库。两个组件都有几乎相同的 API。

【讨论】:

伙计,寻求建议的人不需要复制/粘贴作为帖子

以上是关于使用 Socket.IO 的主要场景是啥的主要内容,如果未能解决你的问题,请参考以下文章

使用 socket.io 管理多个聊天室的正确方法是啥?

socket.io客户端API

websocket 和 socket.io 之间的区别是啥

显示在线关注者的最佳方式是啥,node.js/socket.io 和 Redis

在 ExpressJS 中将 socket.io 实现为子模块的最佳方法是啥?

更改 Socket.IO 静态文件服务路径