我只是想知道为什么以及我们需要Socket.IO的应用程序或案例。
我是一个已知开源项目socket.IO-objc的iOS开发者
通常,我们需要 HTTP 或 HTTPS 来与服务器通信。套接字旨在进行实时通信(它应该始终保持实时 HTTP 连接。)
当我们需要在我们的应用程序中实时时,需要像 socket.IO 这样的库。让我更详细地解释一下。假设您正在开发一款多人游戏,并且 2 个或更多用户可以同时玩该游戏。那么,在这种情况下,您将不会进行 HTTP 或 HTTPS 调用,原因有很多,其中一个是它们的数据包大小很大,另一个是这些调用非常慢。在这种情况下,我们使用诸如套接字之类的库来向服务器发送和接收数据。套接字真的很快,并且能够只发送那些需要的数据包。使用 HTTP 编程,您永远无法创建任何多人游戏或任何将与服务器实时交互的应用程序。
让我们再举一个例子。假设您正在开发一个聊天应用程序。当用户 A 正在键入内容时,用户 B 应该知道 A 正在键入(类似于 facebook messenger 的 gtalk)。如果您在那个时间点使用 HTTP 调用,那么“B”将由于延迟而永远无法看到其他人的实际状态。所以我们可以使用套接字,这样当用户 A 键入任何内容时,他的设备将只发送一个数据包,该数据包只会通知服务器他正在键入并将传递给用户 B,这个过程非常快(几乎是实时的) 并且还会减少数据传输。
我也在使用 socket.io 开发聊天应用程序。所以它似乎用 socket.io 替换了一切。这让我感到怀疑和好奇。我完全同意 socket.io 的聊天套装之类的实时应用程序。然而,有更适合 HTTP 的往返通信(例如用户登录)。
Socket.io 使用 Web 套接字在所有连接到 Web 服务器的用户之间传递数据。使用 Web 套接字,只要相关用户正在向 Web 服务器注册服务,就没有协商协议并且连接保持打开状态。正如还指出的那样,有效负载明显小于 http/https 协议。
Socket.IO 是一个用于实时 Web 应用程序的 JavaScript 库。它支持 Web 客户端和服务器之间的实时双向通信。它有两个部分:在浏览器中运行的客户端库和 node.js 的服务器端库。这两个组件具有几乎相同的 API。