最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

node.js基于socket.io快速实现一个实时通讯应用

来源:动视网 责编:小采 时间:2020-11-27 21:58:21
文档

node.js基于socket.io快速实现一个实时通讯应用

node.js基于socket.io快速实现一个实时通讯应用:随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。 HTTP是最常用的客户端与服务端的通信技术,但是HTTP通信只能由客户端发起,无法及时获取服务端的数据改变。只能依靠定期轮询来
推荐度:
导读node.js基于socket.io快速实现一个实时通讯应用:随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。 HTTP是最常用的客户端与服务端的通信技术,但是HTTP通信只能由客户端发起,无法及时获取服务端的数据改变。只能依靠定期轮询来


3 pong——由服务器发送以响应ping数据包。

服务器发送:3probe,响应客户端

4 message——实际消息,客户端和服务器应该使用数据调用它们的回调。

5 upgrade——在engine.io切换传输之前,它测试,如果服务器和客户端可以通过这个传输进行通信。如果此测试成功,客户端发送升级数据包,请求服务器刷新其在旧传输上的缓存并切换到新传输。

6 noop——noop数据包。主要用于在接收到传入WebSocket连接时强制轮询周期。

实例

以上的截图是上述例子中数据传输的实例,分析一下大概过程就是:

  • connect握手成功
  • 客户端会发送2 probe探测帧
  • 服务端发送响应帧3probe
  • 客户端会发送内容为5的Upgrade帧
  • 服务端回应内容为6的noop帧
  • 探测帧检查通过后,客户端停止轮询请求,将传输通道转到websocket连接,转到websocket后,接下来就开始定期(默认是25秒)的 ping/pong
  • 客户端、服务端收发数据,4表示的是engine.io的message消息,后面跟随收发的消息内容
  • 为了知道Client和Server链接是否正常,项目中使用的ClientSocket和ServerSocket都有一个心跳的线程,这个线程主要是为了检测Client和Server是否正常链接,Client和Server是否正常链接主要是用ping pong流程来保证的。

    该心跳定期发送的间隔是socket.io默认设定的25m,在上图中也可观察发现。该间隔可通过配置修改。

    参考engine.io-protocol

    文档

    node.js基于socket.io快速实现一个实时通讯应用

    node.js基于socket.io快速实现一个实时通讯应用:随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。 HTTP是最常用的客户端与服务端的通信技术,但是HTTP通信只能由客户端发起,无法及时获取服务端的数据改变。只能依靠定期轮询来
    推荐度:
    标签: 实时 通讯 应用
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top