因為ws地址類似這樣:ws://127.0.0.1:8000/ws/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp
token每隔幾分鐘就會變,需要改變token,改變ws的連接地址。
如何在關(guān)閉當(dāng)前連接,創(chuàng)建一個新連接?
workerman有一個很大的問題,就是只能創(chuàng)建,無法關(guān)閉。比如創(chuàng)建一個http服務(wù),就只能一直開著,沒有關(guān)閉的功能,無法靈活調(diào)整
可以主動關(guān)閉啊 close 方法
客戶端也可以關(guān)閉啊 連接時獲取到了連接對象 connection 調(diào)用connection 上的 關(guān)閉連接方法
$udp_connection = new AsyncUdpConnection('udp://127.0.0.1:1234');
$udp_connection->onConnect = function(AsyncUdpConnection $udp_connection){
$udp_connection->send('hi');
};
$udp_connection->onMessage = function(AsyncUdpConnection $udp_connection, $data){
// 收到服務(wù)端返回的數(shù)據(jù) hello
echo "recv $data\r\n";
// 關(guān)閉連接
$udp_connection->close();
};
$udp_connection->connect();
close是關(guān)閉連接,然后重新new AsyncTcpConnection,重新設(shè)置onMessage等回調(diào)就行了
這個是關(guān)閉連接 http://m.wtbis.cn/doc/workerman/tcp-connection/close.html
停止監(jiān)聽是 $worker->unlisten();
$worker->onWorkerStart = function(){
// 每隔10秒用新token去連一次
$token = md5(time());
Timer::add(10, 'connect_with_token', [$token]);
};
function connect_with_token($token)
{
static $connection;
if ($connection) $connection->close();
$connection = new AsyncTcpConnection('ws://127.0.0.1:8000/ws/?token='.$token);
$connection->onMessage = function($connection, $data){
var_dump($data);
};
$connection->connect();
}