最近在workerman里面使用AsyncTcpConnection作为客户端连接ws服务器。但是对方里面有一个签名规则,里面需要nonce(当前时间融入到签名里面),并且会检验nonce的时效性。
使用过程中,触发onClose重连的时候,发现里面send的订阅数据是刚启动时候的数据。这里有没有地方可以设置reConnect时发送的数据呢?不太懂如何处理?还是只能自己另外实现reConnect的方式了?
已解决,下面为调整的代码:
<?php
$apikey = 'xxxx';
$seckey = 'xxxx';
$params = 'xxxxx';
function create_sign ($apikey, $seckey, $params) {
$time = time();
$payload = $apikey . $nonce . $params;
return hash_hmac('sha256', $payload, $seckey, false);
}
//摘录部分
$worker->onClose = function ($wk) use ($apikey, $seckey, $params) {
$time = time();
$msg = json_enconde();
$wk->msg = $msg;
$wk->reConnect(5);
};
自己写一下逻辑吧
已经找到处理方式了,直接用一个全局变量,onClose里面修改这个变量之后,再调用reConnect