关于web-msg-sender的curl推送消息模式

shaowei98

基于web-msg-sender的demo,发现它是向websocket服务器建立curl连接提交post请求实现消息推送的,因此在实践中为了向部分用户(多个但非全部用户)推送,使用了如下代码形式:

[attach]981[/attach]
但是发现如此操作的话效率很低,并且似乎造成cpu占比飙高。请问是否有什么方法可以改善呢?

4120 3 0
3个回答

maq

不了解 web-msg-sender,控制端向 web-msg-sender 发指令只能是这种“一个一个地发送”吗?

能不能一次发送一批 uid?能不能用 group 方式?

如果不行的话,干脆改造或者自己写一个 web-msg-sender 好了,反正用 Workerman 做这种事情超简单,创建两个 Worker实例(一个 socketio 协议,一个 http 协议)就 OK 了。

  • shaowei98 2018-03-27

    发现在GatewayWorker上有分组推送功功能。。。改造的话用户分组登录和分组推送怎么实现呢,分组推送的话本质上不也是要一个个循环curl?

mdx2007

记得phpsocket.io是有join加入群组和群组发送方法的。估计得改造下web-msg-sender

  • shaowei98 2018-03-27

    发现在GatewayWorker上有分组推送功功能。。。改造的话用户分组登录和分组推送怎么实现呢,分组推送的话本质上不也是要一个个循环curl?

  • mdx2007 2018-03-27

    GatewayWorker 和 phpsocket.io 是两个东西,都有分组功能,有分组功能当然不用一个个循环curl了。怎么用得看文档了

maq

@mdx2007:

你之所以用 curl,是从你的业务系统给 web-msg-sender 发送指令(无论这个 web-msg-sender 是 phpsocket.io 实现的还是用 GatewayWorker 实现的,原理是一样的),这个环节理论上有三种形式:

给甲发送“你好”
给乙发送“你好”
给丙发送“你好”

给甲、乙、丙分别发送“你好”

给第一组的所有人分别发送“你好”

你原帖里说的方式(也就是现在的 web-msg-sender 实际支持的方式)是第一种,如果经过改造,可以让 web-msg-sender 支持第二种、第三种,它们都是只要一次 curl 就可以解决问题的。

  • 暂无评论
年代过于久远,无法发表回答
🔝