Socket.IO - 概述

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

实时应用程序

实时应用程序(RTA)是一种在用户感知为即时或当前的时间段内运行的应用程序。

实时应用的一些例子是 -

  • 即时通讯工具 - Whatsapp,Facebook Messenger 等聊天应用程序。你无需刷新你的应用程序/网站即可接收新邮件。

  • 推送通知 - 当有人在 Facebook 上的图片中标记你时,你会立即收到通知。

  • 协作应用程序 - 谷歌文档等应用程序,允许多人同时更新相同的文档并将更改应用于所有人的实例。

  • 在线游戏 - 反恐精英,使命召唤等游戏也是实时应用程序的一些例子。

为什么选择 Socket.IO?

使用流行的 Web 应用程序堆栈(如LAMP(PHP))编写实时应用程序一直非常困难。它涉及轮询服务器以进行更改,跟踪时间戳,并且它比它应该慢得多。

传统上,Sockets 是大多数实时系统架构的解决方案,在客户端和服务器之间提供双向通信通道。这意味着服务器可以将消息推送到客户端。每当事件发生时,服务器将获取它并将其推送到相关的连接客户端。

Socket.IO 非常受欢迎,它被 Microsoft Office,Yammer,Zendesk,Trello 和许多其他组织用于构建强大的实时系统。它最强大的一个 JavaScript 框架GitHub 上,大部分依赖在 NPM(节点包管理器)模块。 Socket.IO 也有一个庞大的社区,这意味着寻求帮助非常容易。

ExpressJS

我们将使用 express 来构建 Socket.IO 使用的 Web 服务器。可以使用任何其他节点 - 服务器端框架甚至节点 HTTP 服务器。但是,ExpressJS 可以轻松定义路线和其他内容。要阅读有关 express 的更多信息并获得有关它的基本知识,请访问 ExpressJS 教程