$client = new AsyncTcpConnection('ws://xxx.com:80');
$client->onConnect = function($con) {
$rid = time();
$lang = "kor";
$con->send('xxx');
};
$client->onMessage = function($con, $data) use($ids,$orates,$client) {
....
}
$client->connect();
代碼如上,日志隔三差五就報下面錯誤,找不到有原因,求幫助...
recv data before handshake. Buffer:890c31303a34333a35332e373833
error package. package_length=false
感謝walkor回復(fù)
代碼沒有new ws://,
代碼整體啟動了
Gateway('Websocket://0.0.0.0:7272'),
Register('text://0.0.0.0:1236');
BusinessWorker();
然后單獨在開個new Worker();做定時任務(wù)。
Timer::add($this->sec, array($this,'refresh'));
function refresh(){
$client = new AsyncTcpConnection('ws://xxx:80');
echo "start connect id:".$client->id;
因為遠(yuǎn)端經(jīng)常掉線或者踢人,所以沒有保持長連接,每次定時開始都重新new一個連接,獲取數(shù)據(jù)后立即destory,就是這個異步鏈接經(jīng)常報錯:
start connet id:48
connect id:48 buffer:05:37:00.426 recv data before handshake. Buffer:890c30353a33373a30302e343236
error package. package_length=false
}
/*
* Websocket protocol for client.
*/
Class Ws{
public static function input($buffer, $connection)
{
if (empty($connection->handshakeStep)) {
echo "connect id:".$connection->id." buffer".$buffer;
echo "recv data before handshake. Buffer:" . bin2hex($buffer) . "\n";
return false;
}
}
過年之前我就一直開著服務(wù),年后回來一看,服務(wù)死掉了,有大量這種錯誤,開始以為就是這里搞死服務(wù)的,那現(xiàn)在看起來應(yīng)該不是,遠(yuǎn)端沒有握手,destory掉就是了,應(yīng)該不影響進(jìn)程,搞不清是哪里死掉了,在看看日志吧,感謝回復(fù)