iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >socket.io断线重连的几种场景及处理方法
  • 507
分享到

socket.io断线重连的几种场景及处理方法

socketio断开重连socket断开连接socket 重连 2023-03-19 17:03:43 507人浏览 薄情痞子
摘要

最近有做一个项目,类型聊天室的需求,自然也就选用了Socket.io。搭建起来的确快,不管是km上还是外面,大把聊天室的demo,当然,只是demo,简易聊天室,而我们的需求当然不会

最近有做一个项目,类型聊天室的需求,自然也就选用了Socket.io。搭建起来的确快,不管是km上还是外面,大把聊天室的demo,当然,只是demo,简易聊天室,而我们的需求当然不会那么简单啦,于是,就开始填坑了。

本机调一切都好,布上服务器之后,各种异常就开始出现了。

代码只帖一点片段吧,这里假定你对socket.io有了一定的了解。

io.on('connection', (socket) => {
    //加入房间
    socket.join(roomID, () => {
        console.log('join');
    });
 
    //退出房间
    socket.on('disconnect', () => {
        console.log('disconnect');
    })
});

这是server端的代码,很典型的一个流程,建立连接、加入房间、退出房间。不过在服务器上实际运行当中发现,服务器并不会那么地稳定,会偶尔出现闪断的情况,这个时候就会触发到disconnect.

我们都知道,socket.io是自带有断线重连的机制的,不过断线也分为好几种场景,下面我们来分别看一看。

1、客户端主动断线。

这种基本上就是正常的情况,服务端会收到disconnect事件,从而做相应操作。

2、服务端主动断线。

服务端主动触发socket.disconnect(),这种情况下客户端会收到disconnect事件,但是不会触发reconnect重连事件,因为socket已经被断开了。

3、服务端重启

每次发布的时候,服务端重启,都会触发到客户端的disconnect事件,而后会触发重连事件 reconnecting->reconnect->connect。服务器出现异常的时候也会触发重连。

4、客户端断网

在客户端掉线的情况下,服务端收不到任何事件。客户端会收到disconnect事件,然后触重连事件的循环,如果不设置最大重连次数的话,会一直循环下去。

所以对于断线重连,客户端跟服务端都需要做处理。

下面是客户端对断线重连的设置方法

var socket = io("/?room_id=" + room_id, {
    //设置最大重试次数
    reconnectionAttempts: 5
});
 
//重试失败后会调用reconnect_failed事件
socket.on('reconnect_failed', function () {
    console.log('reconnect_failed');
});

总结

到此这篇关于socket.io断线重连的几种场景及处理方法的文章就介绍到这了,更多相关socket.io断线重连场景内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: socket.io断线重连的几种场景及处理方法

本文链接: https://www.lsjlt.com/news/200331.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作