Socket.io是real-time web applications(Web实时应用库)的JavaScript库。它支持网络客户端和服务器之间的实时双向通信。它有两个部分:在浏览器中运行的client-side library(客户端)和node.js的server-side library(服务器)

实时应用

实时应用程序是指在用户感觉为即时或当前的时间段内运行的应用程序。

实时应用的一些例子有

  • Instant messengers聊天应用程序,如Whatsapp、脸书信使等。您不需要刷新您的应用程序/网站来接收新消息。

  • Push Notifications当有人在脸书上的图片中标记你时,你会立即收到通知。

  • Collaboration Applications像google docs这样的应用程序,允许多人同时更新相同的文档,并将更改应用到所有人的实例。

  • Online Gaming像CS、使命召唤等游戏,也是实时应用的一些例子。

为什么用Socket.io?

用像LAMP这样流行的网络应用程序栈来编写实时应用程序传统上是非常困难的。它涉及到轮询服务器的变化,跟踪时间戳,并且比应该的慢得多。

套接字传统上是大多数实时系统架构的解决方案,提供了客户端和服务器之间的双向通信通道。这意味着服务器可以向客户端推送消息。每当事件发生时,我们的想法是服务器会得到它,并把它推给相关的连接客户端。

Socket.io非常受欢迎,被Microsoft Office, Yammer, Zendesk, Trello和许多其他组织用来构建健壮的实时系统。它是GitHub中最强大的JavaScript frameworks之一,并且最受依赖的NPM(节点包管理器)模块。Socket.io还有一个庞大的社区,这意味着寻求帮助非常容易。