ping的字符串和二進(jìn)制數(shù)據(jù)格式是什么樣的?ping采用什么機(jī)制?
ping機(jī)制其實(shí)就是向客戶端定時(shí)發(fā)送一小段數(shù)據(jù)
這段數(shù)據(jù)滿足以下規(guī)則:
1、必須符合你的通訊協(xié)議
2、客戶端能夠識別ping的數(shù)據(jù),客戶端可以忽略服務(wù)端的ping數(shù)據(jù)或者回復(fù)一個(gè)pong的數(shù)據(jù)
例如你的通信協(xié)議是 text+回車
那么你可以發(fā)送一個(gè) ping的數(shù)據(jù)例如 ping\n
方法如下:新建一個(gè)ping.data文件,內(nèi)容為ping+回車,
配置Gateway.conf.ping_data = yourpath/ping.data
yourpath為你ping.data的目錄
例如你的通信協(xié)議是websocket協(xié)議,你需要一個(gè)符合websocket協(xié)議的ping的數(shù)據(jù)。
方法如下:
進(jìn)入到workerman項(xiàng)目目錄,運(yùn)行
php -a
include './applications/Chat/Protocols/WebSocket.php';
// yourpath為你要存放ping數(shù)據(jù)的地方
file_put_contents('/tmp/ping.data', \Protocols\Websocket::encode('ping'));
配置Gateway.conf.ping_data = /tmp/ping.data
那服務(wù)端怎么處理ping不通的連接?
直接ping不同就踢掉連接還是多少次ping不通踢掉?
這個(gè)可以設(shè)置 在conf/conf.d/Gateway.conf設(shè)置
ping_not_response_limit = N
代表客戶端連續(xù)N次沒有回應(yīng)心跳數(shù)據(jù)就斷開鏈接,N可以為1