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