使用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



目录
相关文章
|
3月前
|
NoSQL JavaScript 数据库连接
超级实用!详解Node.js中的mongodb模块和socket.io模块
超级实用!详解Node.js中的mongodb模块和socket.io模块
|
4月前
|
人工智能 JavaScript 前端开发
使用 Node.js、Socket.IO 和 GPT-4 构建 AI 聊天机器人
使用 Node.js、Socket.IO 和 GPT-4 构建 AI 聊天机器人
98 0
|
8月前
|
前端开发 API 开发工具
阿里云oss开发实践:大文件分片、断点续传、实时进度 React+Node+Socket.IO
阿里云oss开发实践:大文件分片、断点续传、实时进度 React+Node+Socket.IO
848 1
|
11月前
|
JavaScript NoSQL 前端开发
Node.js精进(11)——Socket.IO
Node.js精进(11)——Socket.IO
|
JavaScript 前端开发 安全
Node.js 中的阻塞和非阻塞io
Node.js 中的阻塞和非阻塞io
97 0
|
前端开发 JavaScript 程序员
搭建一套支持TS的Node运行环境(下)
搭建一套支持TS的Node运行环境(下)
搭建一套支持TS的Node运行环境(下)
|
资源调度 JavaScript API
搭建一套支持TS的Node运行环境(上)
搭建一套支持TS的Node运行环境(上)
搭建一套支持TS的Node运行环境(上)
|
JavaScript
使用node、Socket.io 搭建简易聊天室(二)
使用node、Socket.io 搭建简易聊天室
221 0
使用node、Socket.io 搭建简易聊天室(二)
|
Kubernetes 网络协议 Cloud Native
【云原生Kubernetes】二进制搭建Kubernetes集群(中)——部署node节点(3)
上一篇中已部署了etcd分布式数据库、master01节点, 本文将部署Kubernetes集群中的 worker node 节点和 CNI 网络插件。
196 0
|
Kubernetes 网络协议 Cloud Native
【云原生Kubernetes】二进制搭建Kubernetes集群(中)——部署node节点(2)
上一篇中已部署了etcd分布式数据库、master01节点, 本文将部署Kubernetes集群中的 worker node 节点和 CNI 网络插件。
237 0