onclose触发的问题

lydinit

请问如果一个客户端在初始化长连接之后,再进行一次初始化,是否会触发onclose回调

3498 1 0
1个回答

phpcreeper

这得看你是什么客户端以及是怎么初始化的了:
1、比如浏览器每刷新一次,客户端连接对象每次都会释放,所以每次刷新都会触发onClose 回调;
2、比如自行开发的PHP客户端采用了类似单例模式的连接池,那么则不会触发onClose回调;
3、另外如果你每次初始化时都主动关闭之前建立的连接,那么则会触发onClose回调;
 

  • lydinit 2019-04-09

    主动关闭之前的连接指的是主动调用onclose吗?我也不知道前端那边是怎样的,现在我的情况是应用切换到后台后只要没有超过心跳 的设定的秒数,就不会调用onclose,但是断网后就会,我看了一下这两个的区别,就是断网后他会重新初始化长连接,切换到后台则不会

  • phpcreeper 2019-04-09

    1、主动关闭一般指的是程序内部显式的调用如close()方法来关闭连接;
    2、断网肯定会导致连接的断开,但是这种情况服务端是无法感知客户端连接断开事件的,也就是无法触发onClose回调,这也正是“心跳”机制的用武之地,之所以断网了还能触发onClose,那是因为你设有心跳机制。

  • lydinit 2019-04-12

    感谢大佬解答`~

年代过于久远,无法发表回答
×
🔝