Webman-push-server 插件使用问题

凌晨三点半的卢本伟

问题描述

想做一个聊天室demo

引入插件 Webman-push-server

前端代码
截图

<script src="/vendor/webman/push/src/push.js"> </script>
<script>
    // 建立连接
    var connection = new Push({
        url: 'ws://对应ip:3131', // websocket地址
        app_key: '0aa69a30a4bd1f24f0d574482b3660a2',
        auth: '/plugin/webman/push/auth' // 订阅鉴权(仅限于私有频道)
    });
    // 假设用户uid为1
    var uid = 1;
    // 浏览器监听user-1频道的消息,也就是用户uid为1的用户消息
    var user_channel = connection.subscribe('user-' + uid);
    // 当user-1频道有message事件的消息时
    user_channel.on('message', function(data) {
        // data里是消息内容
        console.log(data);
    });
</script>

后端 代码
截图

public function room()
    {
        dd('欢迎来到聊天室');
        $api = new Api(
            // webman下可以直接使用config获取配置,非webman环境需要手动写入相应配置
            'http://对应ip:3131',
            config('plugin.webman.push.app.app_key'),
            config('plugin.webman.push.app.app_secret')
        );
        dd($api);
        // 给订阅 user-1 的所有客户端推送 message 事件的消息
        $api->trigger('user-1', 'message', [
            'from_uid' => 2,
            'content'  => '你好,这个是消息内容'
        ]);
        return view('chat/room');
    }

打印数据
截图
腾讯云开启了3131端口 0.0.0.0/0 宝塔也放行了

连接后发现 前端ws 连接返回code码 101 发现不成功。截图
network的header头返回 101 Switching Protocols

测试环境为 php7.43 redis7

为此你搜索到了哪些方案及不适用的原因

以前用过聊天,只要开放端口,对应ip跟协议(ws)就能通,这个暂时想不到是什么原因,有大佬指点一下吗

1176 3 0
3个回答

chaz6chez

这个插件现在还是alpha版本,还在完善测试用例和内测

  • chaz6chez 2022-12-08

    webman/push和workbunny/webman-push-server是两个插件,目前您可以先使用webman/push插件实现您所需要的功能

  • OhMangoCat 2022-12-08

    我今天也是装了你的插件试了下, 不太行,我也没折腾,果断先切回webman的了标签😂

  • 凌晨三点半的卢本伟 2022-12-08

    原来是这样,还以为是我这边配置不对呢,感谢大佬回答

chaz6chez

目前进入beta版,可以在测试环境试试

bugS

我看现在进入生产环境了吗?

年代过于久远,无法发表回答
🔝