SDL中文论坛
标题:
客户端如何判断IRC连接是否依旧有效
[打印本页]
作者:
admin
时间:
2020-9-3 18:08
标题:
客户端如何判断IRC连接是否依旧有效
不论是什么协议,客户端判断连接是否有效的一个最根本要求是在一定时间内必须从服务器收到数据。具体对IRC,涉及到这方面的有ping、pong机制。
IRC协议中的ping、pong机制
A向B发ping,B向A返回pong。方向可以是服务器向客户端,也可以是客户端向服务器。
服务器间隔多久向客户端发出ping?
实测下来,在chat.freenode.net:6665上测出来间隔时间是2.5分钟。
客户端间隔多久向服务器发出ping?
hexchat设置的间隔时间是30秒。
我认为间隔30秒有点短了,当存在大量连接时就是处理ping就会增加不少带宽。我把这个间隔拉长到1分钟。
当前在用的判断逻辑
1、当一直有收到数据时,不必做额外处理。
2、当超过1分钟没有收到数据时,向服务器发ping命令,如果在接下2分钟内没收到数据(包括pong),则认为连接已断开。
3、测试时遇到过发了ping后服务器不回pong,但再发ping又收到pong,
也就是说即使连接有效发了ping也可能收不到pong!
第2条其实保证了客户端会等3分钟,考虑到服务器会以小于3分钟间隔(2.5秒)向客户端发出ping,那么只要收到这个ping也会使客户端认为连接依旧有效。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3