概述
Socket.IO是一个用于real-time web applications的JavaScript库。 它支持Web客户端和服务器之间的实时双向通信。 它有两部分:在浏览器中运行的client-side library ,以及node.js的server-side library 。 两个组件都具有相同的API。
Real-time applications
实时应用程序(RTA)是一种在用户感知为即时或当前的时间段内运行的应用程序。
实时应用的一些例子是 -
Instant messengers - Whatsapp,Facebook Messenger等聊天应用程序。您无需刷新您的应用程序/网站即可接收新邮件。
Push Notifications - 当有人在Facebook上的图片中标记您时,您会立即收到通知。
Collaboration Applications - 谷歌文档等Collaboration Applications程序,允许多人同时更新相同的文档,并对所有人的实例应用更改。
Online Gaming - 反恐精英,使命召唤等游戏也是实时应用程序的一些例子。
Why Socket.IO?
使用流行的Web应用程序堆栈(如LAMP(PHP))编写实时应用程序一直非常困难。 它涉及轮询服务器以进行更改,跟踪时间戳,并且它比它应该慢得多。
传统上,套接字是大多数实时系统架构的解决方案,在客户端和服务器之间提供双向通信通道。 这意味着服务器可以将消息推送到客户端。 每当事件发生时,想法是服务器将获取它并将其推送到相关的连接客户端。
Socket.IO非常受欢迎,它被Microsoft Office, Yammer, Zendesk, Trello和许多其他组织用于构建强大的实时系统。 它是GitHub最强大的JavaScript frameworks ,并且最依赖于NPM(节点包管理器)模块。 Socket.IO也有一个庞大的社区,这意味着寻求帮助非常容易。
ExpressJS
我们将使用express来构建Socket.IO将使用的Web服务器。 可以使用任何其他节点 - 服务器端框架甚至节点HTTP服务器。 但是,ExpressJS可以轻松定义路线和其他内容。 要阅读有关express的更多信息并获得有关它的基本知识,请访问 ExpressJS 教程 。