国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Workerman作為客戶端和服務(wù)器關(guān)閉連接后 怎么做到自動(dòng)和服務(wù)器重連?

wuyuan

我想在客戶端斷開連接時(shí)重新和服務(wù)器建立連接。我在onClose里面這樣寫不行,要怎么寫才對?
[attach]363[/attach]

8391 7 0
7個(gè)回答

walkor 打賞

在onClose時(shí)調(diào)用$con->connect()就可以重連了,不用重新new AyncTcpConnection。
注意:這個(gè)重連特性需要workerman版本>=3.3.4。

$con = new AsyncTcpConnection(...);
$con->onXXX=function...
// onClose時(shí)重連即可
$con->onClose=function($con) {
    $con->connect();
};
$con->connect();
  • 暫無評論
wuyuan

謝謝walkor!

  • 暫無評論
walkor 打賞

不客氣

  • 暫無評論
wuyuan

@walkor 重新連接成功了,onConnect有東西輸出,服務(wù)器端也收到消息,但是客戶端沒收到服務(wù)端發(fā)送的數(shù)據(jù)。正常情況下應(yīng)該是一直循環(huán)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)吧

[attach]364[/attach]

服務(wù)端接收的數(shù)據(jù)
[attach]365[/attach]

服務(wù)端代碼
[attach]366[/attach]

  • 暫無評論
walkor 打賞

稍后我看下

  • 暫無評論
walkor 打賞

我知道問題了,
onClose里面不能用定時(shí)器調(diào)用$con->connect()重連,因?yàn)槎〞r(shí)器是異步的,異步鏈接對象onClose時(shí)不立刻調(diào)用$con->connect()就會被workerman回收,異步鏈接的onMessage等回調(diào)都被回收了,所以沒作用。

定時(shí)重連只能重新new AsyncTcpConnection了。
如果不需要定時(shí)重連,可以在onClose里面直接$con->connect()

  • pader 2016-08-26

    一般情況下,都不會 close 就立即重連吧,都會用定時(shí)器等個(gè)至少幾秒。因?yàn)槎鄶?shù)情況下由于服務(wù)端或者網(wǎng)絡(luò)不穩(wěn)定的斷開,就算立即重連也多半是失敗的。

pader

在 onClose 里面添加的定時(shí)器中,創(chuàng)建新的 $connection 時(shí)重連時(shí)需要把整個(gè) onWorkerStart 里面創(chuàng)建 $connection 的部分都執(zhí)行一遍??梢园?onMessage, onClose, onError 三個(gè)寫成獨(dú)立的函數(shù),然后回調(diào)傳入函數(shù)名稱就行了。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??