关于 webman/push 插件的使用问题

凌晨三点半的卢本伟

运行环境

系统 CentOS 7.6 php 7.4 webman/push 版本 1.0 webman-framework版本 1.5

前期准备

1.已配置好https
2.已开启31端口与32端口(宝塔与腾讯云防火墙)
3.私有频道订阅 private-user-test
4.成功订阅后 服务器会提示 online channels: private-user-test 订阅成功
5.服务器会给客户端发送一段文字

问题描述

1.客户端收不到 console.log(data); 的信息
2.服务端 用 $request get/post/all 没有打印出数据

附上截图

1.客户端发起的订阅与消息推送
截图
1.1客户端提交的信息
截图

2.服务端接收与推送
截图
截图

为此你如何解决

1.服务器端 从 'http://127.0.0.1:3131' -》 'http://127.0.0.1:3232' -》 'https://127.0.0.1:3131' -》'https://127.0.0.1:3232' -》 'wss://wm-admin.xxx.top' 依次替换,还是未到达预期效果

如何解决问题

1.是不是订阅写的不对
2.客户端如何获取回调数据
3.服务端推送的频道是否有误

211 2 0
2个回答

six

new Api 参数传错了,你看文档。

  • 凌晨三点半的卢本伟 2024-03-09

    之前都更改过 new Api 的配置项,但是还是不对

  • six 2024-03-09

    直接拷贝文档的代码

    $api = new Api(
        'http://127.0.0.1:3232',
        config('plugin.webman.push.app.app_key'),
        config('plugin.webman.push.app.app_secret')
    );

    别改东西,尤其是端口

  • 凌晨三点半的卢本伟 2024-03-09

    就是试过这个端口不行,才改的其他配置,你看看我上面的

软饭工程师

这样就好了

        $api = new Api(
        // webman下可以直接使用config获取配置,非webman环境需要手动写入相应配置
            config('plugin.webman.push.app.api'),
            config('plugin.webman.push.app.app_key'),
            config('plugin.webman.push.app.app_secret')
        );

        $channelName = 'private-user-' . $param['uid'];
//        // 给订阅 user-1 的所有客户端推送 message 事件的消息
        $api->trigger($channelName, 'message', [
            'from_uid' => 2,
            'content' => '你好,这个是消息内容'
        ]);

客户端

    var uid = 1;
    touid = 2

    // 订阅频道
    var channel1 = connection.subscribe('private-user-' + uid);
    channel1.on('message', function (data) {
        // data里是消息内容
        console.log(data);
    });
🔝