使用node、Socket.io 搭建简易聊天室(一)

简介: 使用node、Socket.io 搭建简易聊天室

官方介绍(链接)


Socket.io是一个WebSocket库,会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,而且支持的浏览器最低达IE5.5。

Socket.io 服务器 和 Socket.io 客户端之间全双工通信信道 尽可能使用WebSocket 连接建立(”尽可能“就说明要求客户端和服务端都必须使用http://socket.io的解决方案),并将使用 HTTP 长轮询作为后备。

在了解socket-io前,我们先了解三种通信方式和Http轮询。


三种通信方式


全双工通信、单工通信、半双工通信都属于通信信道,提供传输数据的途径。

  • 全双工通信:通信传输的术语,数据可以双向传递,并且是瞬时的,A到B和B到A是瞬时同步的,能力上相当于两个单工通讯方式的组合。
  • 单工通信:消息只允许单方向的通讯,发送端和接收端是固定的,发送端只接收发送消息,不接收,接收端只接收消息,不发送。
  • 双工通信:数据可以双向传输,但不是瞬时的,必须交替进行。发送端和接收端的角色可以互换,在同一时间,数据只能在一个方向传输,相当于切换方向的单工通讯。

Http 短轮询、长轮询


早期网站进行数据推送的技术基本都是基于Http轮询。轮询是指客户端每隔一段时间向服务器端发送请求,服务器端接收到客户端请求后返回数据给客户端。客户端轮询的方式有两种:短轮询、长轮询。


  • 短轮询:客户端每隔(比如5s)向服务器端发送普通的http请求,服务器端查询是否有数据更新,有更新返回客户端最新数据,无更新提示客户端无数据更新。
  • 长轮询:客户端向服务器发送较长时间的http请求,并在超时前不会断开连接,待过了超时时间或者服务器端有数据返回时断开连接,紧接着会再次建立一个一样的http请求,重复操作。


socket-io


  • 比websocket优势

1.由于使用了一些错误配置的代理而无法建立 WebSocket 连接,连接将回退到 HTTP 长轮询,

2.Socket.IO 包含一个心跳机制,它会定期检查连接的状态。服务器和客户端之间的 WebSocket 连接可能会中断,而双方都不知道链接的断开状态。当客户端最终断开连接时,它会以指数回退延迟自动重新连接,以免使服务器不堪重负。

3.当客户端断开连接时,数据包会自动缓冲,并在重新连接时发送。


  • 区别

http和webscoket都是基于tcp,http建立的是短连接,websocket建立的是长连接


  • 安装socket-io、express
npm install socket-io -S
npm install express@4 -S



目录
相关文章
|
6月前
|
存储 Python
【python】基于Socket的聊天室Python开发
【python】基于Socket的聊天室Python开发
|
2月前
|
JSON 前端开发 JavaScript
socket.io即时通信前端配合Node案例
本文介绍了如何使用socket.io库在Node.js环境下实现一个简单的即时通信前端配合案例,包括了服务端和客户端的代码实现,以及如何通过socket.io进行事件的发送和监听来实现实时通信。
38 2
|
3月前
|
JavaScript 前端开发 Ubuntu
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
58 0
|
3月前
|
存储 JavaScript 数据库
如何使用 Socket.IO、Angular 和 Node.js 创建实时应用程序
如何使用 Socket.IO、Angular 和 Node.js 创建实时应用程序
25 0
|
6月前
|
NoSQL JavaScript 数据库连接
超级实用!详解Node.js中的mongodb模块和socket.io模块
超级实用!详解Node.js中的mongodb模块和socket.io模块
|
6月前
|
Linux 调度
基于Linux socket聊天室-多线程服务器问题处理(02)
基于Linux socket聊天室-多线程服务器问题处理(02)
34 0
|
JavaScript
as3与node.js的socket通信
这里使用了一个单例的SocketManager类: 1: conn = new Socket(); 2: 3: conn.
852 0
|
2月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
1月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
26 2
|
2月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)