同个用户id登录到多个系统如A、B、C,现在要求A发的消息只能A用户收到,B发的消息只能B用户收到

phpworker2

同个用户id登录到多个系统如A、B、C,现在要求A发的消息只能A用户收到,B发的消息只能B用户收到
但是通过bindUid($client_id,$uid),只能根据$uid绑定,$uid在A、B、C系统间是相同的,请问有什么好的方法解决吗?

2768 1 0
1个回答

walkor 打赏

可以利用分组功能,Gateway::joinGroup($client_id, A);
然后通过Gateway::sendToGroup(A);向某个分组发送数据,一个clientid可以加入多个分组。
见手册
http://www.workerman.net/gatewaydoc/gateway-worker-development/join-group.html
http://www.workerman.net/gatewaydoc/gateway-worker-development/send-to-group.html

  • phpworker2 2016-05-10

    场景:
    用户1登录到系统A,系统B
    用户2也登录到系统A,系统B
    现在 用户1 给 用户2 发消息
    在A系统发的只能A系统用户2能收到
    在B系统发的只能B系统用户2能收到

    其实就是多个系统要对接到workerman,
    怎么保证不同系统的用户之间发的消息互相独立,不影像其他系统
    怎么解决啊?

  • walkor 2016-05-10

    利用分组,上面给你连接了。

  • walkor 2016-05-10

    或者部署多套GatewayWorker也行

  • phpworker2 2016-05-10

    @1:利用你说的分组,这样同个系统其他用户都可以收到了,那怎么分别是同一个用户呢?

  • walkor 2016-05-10

    也可以用Gateway::joinGroup做

  • walkor 2016-05-10

    也可以用Gateway::joinGroup做,组里就一个用户连接

  • phpworker2 2016-05-10

    @1:多谢了,joinGroup还是不太理解,我在,$uid上拼上不同系统id,发时也加上系统id就可以了

  • tony998 2017-05-18

    其实变通一下,给uid加个前缀就行了

年代过于久远,无法发表回答
×
🔝