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 教程 。