WEB消息推送框架,实现带自定义参数

Angen

求提示,怎么实现 自定义带参?
推送数据的url格式 type=publish&sid=sid&qid=qid&zid=zid&uid=uid&content=xxxx
我在原有的代理中试了几种方法都不行...
其中的to emit方法 在SocketIO.php Socket.php中都有 就是没有搞明白...
看代码,文档我也粗略的看了 未发现解惑之法...
[attach]283[/attach]

[attach]284[/attach]

3299 7 0
7个回答

walkor

把start.php看懂就会了,start.php只有100行代码。
不用看其它php文件,vendor里面是框架的代码,不用改动。只看start.php。

  • 暂无评论
Angen

真的只是 start.php这个页面处理?
那服务端发送时的 url格式 type=publish&sid=sid&qid=qid&zid=zid&uid=uid&content=xxxx
这样就OVER啦?

  • 暂无评论
Angen

@walkor start.php全部代码我都看过了,问题本质还是没有变,最终还是to()这里有问题
$sender_io->to($to)->emit('new_msg', $_POST);
其它地方增加人数,离线删除人数;当前人打开页面数都没问题了;
最终还是无法返回带参的值.........就算接收到多个参数....to()也只能返回一个参数,emit发送的content为内容,最多也只能接带的参数 追加到这里面.其本质没有变

  • 暂无评论
walkor

$sender_io->to($to)->emit('new_msg', $data);
例子里面$data是字符串,实际$data可以是数组,你可以把其它参数放到里面,js收到的是对象。
你可以看下源码docs里面PHPSocket.io手册

  • 暂无评论
Angen

@walkor 你这样就是我上面说的本质没有变化了,还是两个参to+content
$_POST = htmlspecialchars(@$_POST);
这里用了htmlspecialchars来过滤转成html代码很实用,说白了 我这里把参弄成字符串一样的
感谢你为我服务@walkor

  • 暂无评论
walkor

除了to content,可以传其它参数啊,就像你第二个截图不是已经接受多个参数了么?

第二个截图里面我不清楚你为什么写$to=$data;把$to重置了,
然后还

if($to){
    // $to现在是实际是$data,这句是一个无效的调用,发送对象$data是不存在的
    $sender_io->to($to)->emit('new_msg', $to);
}

你写错了吧?

  • 暂无评论
walkor

其实很简单呢,主干代码就这几句

$data = array(
    'sid' => $_POST,
    'qid'=> $_POST,
);
$to = $_POST;
$sender_io->to($to)->emit('new_msg', $data);
  • 暂无评论
年代过于久远,无法发表回答
🔝