第一次用wokerman,怎么在多个worker之间传递数据

buff11

好像建立的各个worker之间没办法传递数据,求解

阅读 1746
3个回答

blogdaren

1、对于单进程模型,设置一个类属性就可以了;
2、对于多进程模型,可以使用官方组件globalData组件,或者第三方的redis组件;

  • 云上屹立君 2018-12-12

    我记得websocket有向指定id发送的函数。

  • blogdaren 2018-12-12

    @5146:额,楼主问的进程内或进程间的数据通信问题,你这个是啥呢?

  • 云上屹立君 2018-12-12

    @614:能不能回答一下我的提问,大哥,心累啊

  • blogdaren 2018-12-12

    @5146: 已经回复你了,参考下吧。

  • buff11 2018-12-12

    我定义了类属性,并在异步连接成功后把对象保存类属性,然后在onmessage里调用类属性也就是异步的链接去send数据,却send不出去,这是哪里出了问题

  • blogdaren 2018-12-12

    你这样使用, onMessage里第一次并没有保存到 uidConnections对象,第一次会发送失败的。

  • blogdaren 2018-12-12

    把 else 那段逻辑到放到 onMessage 外边去,也就是挪到 $inner->....->listen()代码后面,然后在判断保存连接对象。

  • buff11 2018-12-13

    @614:保存到了,我打印出来了,却无法send

  • buff11 2018-12-13

    @614:放到外边就没办法use这个$inner链接接收到的数据

  • blogdaren 2018-12-13

    @5144:可以 send 啊,为什么我可以send ?

  • blogdaren 2018-12-13

    @5144:同样也不明白为啥你说使用不到 $inner链接接收到的数据

  • buff11 2018-12-13

    @614:我也不知道,他就走到这个send,php控制器那边就超时了

  • buff11 2018-12-13

    @614:异步连接不是写在onmessage回调吗,这样他就可以直接使用onmessage的回调参数,使用inner这个链接再去做坏事

  • blogdaren 2018-12-13

    @5144:超时可能是你异步连接的服务器有问题

  • blogdaren 2018-12-13

    @5144:异步连接逻辑写在onmessage回调里也可以,但是得先保存异步连接对象,然后再发送,否则第一次接收到的消息肯定无法发送。

  • buff11 2018-12-13

    @614:服务器应该没问题,在异步里面connect连接时发送数据后onmessage可以收到 服务器返回的数据,但是异步对象保存到类属性后,再调用去send就超时了,应该就没send出去

  • blogdaren 2018-12-13

    @5144: 具体报告什么超时?说服务器应该没问题是你自己感觉没问题呢还是测试确认过没有问题?

  • buff11 2018-12-13

    @614:查了一遍服务器,确实是服务器问题,太尴尬了,太感谢你了

  • blogdaren 2018-12-13

    @5144: 不客气

buff11

这样

  • 暂无评论
静默

用channel组件可以做到worker间通讯

  • buff11 2018-12-13

    不考虑组件的情况下可以完成吗,目前就send这一步了,异步对象也被保存了