国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

用workerman創(chuàng)建的WEBSOCKET獲取客戶端問題

backwang

在onConnect事件中可以通過getRemoteIp獲取客戶端信息,但是在onMessage事件中卻沒有這個(gè)方法。我這業(yè)務(wù)是在接收消息時(shí)要知道是哪個(gè)用戶發(fā)送的并記錄其ID或IP,所以不一定獲取客戶端IP,如果有唯一ID也可以。

2575 3 0
3個(gè)回答

xiuwang

onMessage里可以獲得connection對象,直接調(diào)用 connection-> getRemoteIp 不行么?

$worker = new Worker('websocket://0.0.0.0:9090');
$worker->onMessage = function($connection, $message){
    var_export($connection->getRemoteIp());
};
  • backwang 2021-06-24

    這個(gè)方法在onConnect中是有的,但晨onmessage中沒有

xiuwang

如果你需要唯一id,直接用 microtime(true); 生成一個(gè)時(shí)間戳就好了,怕重復(fù)的話再加個(gè)隨機(jī)數(shù)。
用ip當(dāng)唯一id不好,因?yàn)橐粋€(gè)局域網(wǎng)里的出口ip是一樣的,幾個(gè)人在一個(gè)局域網(wǎng)里用你的系統(tǒng),結(jié)果他們的id是一樣的...,然后就bug了...

  • backwang 2021-06-24

    但是在onmesage中,無法找到在onConnect中創(chuàng)建的這個(gè)唯一ID,它們?nèi)绾谓㈥P(guān)聯(lián)?

xiuwang

onConnect 和 onmesage 的$connection連接對象是一個(gè)啊,你把id賦值給$connection就好了。

$worker->onConnect = function($connection) {
    $connection->id = microtime(true).rand();
}

$worker->onConnect = function($connection, $message) {
    var_dump($connection->id);
}
  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??