基于web-msg-sender的demo,發(fā)現(xiàn)它是向websocket服務(wù)器建立curl連接提交post請(qǐng)求實(shí)現(xiàn)消息推送的,因此在實(shí)踐中為了向部分用戶(多個(gè)但非全部用戶)推送,使用了如下代碼形式:
[attach]981[/attach]
但是發(fā)現(xiàn)如此操作的話效率很低,并且似乎造成cpu占比飆高。請(qǐng)問(wèn)是否有什么方法可以改善呢?
不了解 web-msg-sender,控制端向 web-msg-sender 發(fā)指令只能是這種“一個(gè)一個(gè)地發(fā)送”嗎?
能不能一次發(fā)送一批 uid?能不能用 group 方式?
如果不行的話,干脆改造或者自己寫一個(gè) web-msg-sender 好了,反正用 Workerman 做這種事情超簡(jiǎn)單,創(chuàng)建兩個(gè) Worker實(shí)例(一個(gè) socketio 協(xié)議,一個(gè) http 協(xié)議)就 OK 了。
發(fā)現(xiàn)在GatewayWorker上有分組推送功功能。。。改造的話用戶分組登錄和分組推送怎么實(shí)現(xiàn)呢,分組推送的話本質(zhì)上不也是要一個(gè)個(gè)循環(huán)curl?
記得phpsocket.io是有join加入群組和群組發(fā)送方法的。估計(jì)得改造下web-msg-sender
@mdx2007:
你之所以用 curl,是從你的業(yè)務(wù)系統(tǒng)給 web-msg-sender 發(fā)送指令(無(wú)論這個(gè) web-msg-sender 是 phpsocket.io 實(shí)現(xiàn)的還是用 GatewayWorker 實(shí)現(xiàn)的,原理是一樣的),這個(gè)環(huán)節(jié)理論上有三種形式:
給甲發(fā)送“你好”
給乙發(fā)送“你好”
給丙發(fā)送“你好”
給甲、乙、丙分別發(fā)送“你好”
給第一組的所有人分別發(fā)送“你好”
你原帖里說(shuō)的方式(也就是現(xiàn)在的 web-msg-sender 實(shí)際支持的方式)是第一種,如果經(jīng)過(guò)改造,可以讓 web-msg-sender 支持第二種、第三種,它們都是只要一次 curl 就可以解決問(wèn)題的。