用workerman创建的WEBSOCKET获取客户端问题

0

在onConnect事件中可以通过getRemoteIp获取客户端信息,但是在onMessage事件中却没有这个方法。我这业务是在接收消息时要知道是哪个用户发送的并记录其ID或IP,所以不一定获取客户端IP,如果有唯一ID也可以。

已邀请:

xiuwang

赞同来自:

onMessage里可以获得connection对象,直接调用 connection-> getRemoteIp 不行么?


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

xiuwang

赞同来自:

如果你需要唯一id,直接用 microtime(true); 生成一个时间戳就好了,怕重复的话再加个随机数。
用ip当唯一id不好,因为一个局域网里的出口ip是一样的,几个人在一个局域网里用你的系统,结果他们的id是一样的...,然后就bug了...

xiuwang

赞同来自:

onConnect 和 onmesage 的$connection连接对象是一个啊,你把id赋值给$connection就好了。


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

$worker->onConnect = function($connection, $message) {
var_dump($connection->id);
}

要回复问题请先登录注册