socket.io断线重连的几种场景

在基于socket.io的聊天室项目中,遇到服务器部署后出现的断线问题。socket.io自带断线重连机制,但不同场景下表现不同:1) 客户端主动断线,服务端接收到disconnect事件;2) 服务端主动断线,客户端不触发重连;3) 服务端重启,客户端经历disconnect->reconnecting->reconnect->connect;4) 客户端断网,服务端无法感知,客户端循环重连。因此,客户端和服务端都需要对断线重连进行处理。
摘要由CSDN通过智能技术生成

最近有做一个项目,类型聊天室的需求,自然也就选用了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(),这种情况下客户端会收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值