$socket->id = $data['uid'];
emitting packet with ack id 0
$data['uid'] 为16 ? 映射完毕的ID 应该为16 才对??可是出来结果是0
如何正确映射用户ID 呢?
看了下代码,$socket->id 不是用来做uid映射的,是socket.io内部标记连接id用的,更改它没有意义。 如果你要给你自己定义的uid发数据,先用$socket->join($uid);加入分组,然后就可以在需要给这个uid发数据的时候调用 $io->to($uid)->emit('event name', $data); 就可以给这个uid发数据了。
$socket->id
$socket->join($uid);
$io->to($uid)->emit('event name', $data);
手册 https://github.com/walkor/phpsocket.io/tree/master/docs/zh#%E5%90%91%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E9%80%81%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%90%84%E7%A7%8D%E6%96%B9%E6%B3%95
给题主私下说了几百遍另外一种方法就是:单发to()参数可以取值$socket->id,让后将业务uid和$socket->id做个映射就完事儿了,然后死活搞不清这么个事儿,折腾半天还是拿业务uid赋值覆盖去$socket->id的值。
看了下代码,
$socket->id
不是用来做uid映射的,是socket.io内部标记连接id用的,更改它没有意义。如果你要给你自己定义的uid发数据,先用
$socket->join($uid);
加入分组,然后就可以在需要给这个uid发数据的时候调用$io->to($uid)->emit('event name', $data);
就可以给这个uid发数据了。手册 https://github.com/walkor/phpsocket.io/tree/master/docs/zh#%E5%90%91%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E9%80%81%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%90%84%E7%A7%8D%E6%96%B9%E6%B3%95
给题主私下说了几百遍另外一种方法就是:单发to()参数可以取值$socket->id,让后将业务uid和$socket->id做个映射就完事儿了,然后死活搞不清这么个事儿,折腾半天还是拿业务uid赋值覆盖去$socket->id的值。