webman-push在uniapp中出现连接无反应

JunH

问题描述

使用webman-push在PC端正常,在uniapp会出现当前页面进入连接正常,离开页面返回后不正常
这里写描述
uniapp端使用onshow进入页面每次连接
onhide离开页面关闭连接
但是在本页面点击按钮离开时调用navigateTo
返回使用navigateBack
这个时候onshow能进入 new push也有新连接 但是就是频道通知无法接受到

程序代码或配置

onShow() {
            this.setSockt()
            }
const setSockt = () => {
                // console.log(1)
                // 建立连接
                data.connection = new Push({
                    url: 'wss://省略', // websocket地址
                    app_key: '此处省略',
                    auth: '/plugin/webman/push/auth', // 订阅鉴权(仅限于私有频道)
                })
                // console.log(data.connection)
                // 浏览器监听user-1频道的消息,也就是用户uid为1的用户消息
                data.room_channel = data.connection.subscribe('CHANNEL_ROOM-' + data.shopId)
                data.room_clear = data.connection.subscribe('CHANNEL_ROOM_ALL-' + data.shopId)
                // 当user-1频道有message事件的消息时
                data.room_channel.on('message', res => {
                    // console.log(res.content);
                    if (res.content === 'CHANNEL_QUEUE') {
                        // getLineList()
                    } else {
                        const obj = JSON.parse(res.content)
                        handleData(obj)
                    }
                })
                data.room_clear.on('message', res => {
                    if (res.content === 'CHANNEL_ROOM_ALL') {
                        getData()
                    }
                })
            }

重现问题的步骤

是因为页面没有强制刷新导致连接没有连接成功吗

492 2 0
2个回答

nitron

我帮你格式化下代码,不然这破格式别人本来想帮你解决的都看不下去

const setSockt = () => {
// console.log(1)
// 建立连接
    data.connection = new Push({
        url: 'wss://省略', // websocket地址
        app_key: '此处省略',
        auth: '/plugin/webman/push/auth', // 订阅鉴权(仅限于私有频道)
    })
// console.log(data.connection)
// 浏览器监听user-1频道的消息,也就是用户uid为1的用户消息
    data.room_channel = data.connection.subscribe('CHANNEL_ROOM-' + data.shopId)
    data.room_clear = data.connection.subscribe('CHANNEL_ROOM_ALL-' + data.shopId)
// 当user-1频道有message事件的消息时
    data.room_channel.on('message', res => {
// console.log(res.content);
        if (res.content === 'CHANNEL_QUEUE') {
// getLineList()
        } else {
            const obj = JSON.parse(res.content)
            handleData(obj)
        }
    })
    data.room_clear.on('message', res => {
        if (res.content === 'CHANNEL_ROOM_ALL') {
            getData()
        }
    })
}
  • liziyu 2023-11-24

    mark

  • Doogeli 22天前

    uniapp 我是放在app.vue里面的,整个app都可以,不然问题挺多。大佬教的

  • 德玛西亚 13天前

    @Doogeli 大哥你是怎么放的push-uniapp.js,能发一下吗?我也遇到问题了

  • Doogeli 8天前

    升级最新版吧。之前的版本IOS进入没法联到,升级后就可以了。在APP.VUE里面加载,然后在onlaunch写上websocket连接,这样全局调用就可以了

TM

离开的生命周期进入正常吗?uniapp的离开生命周期仅支持原本的导航,不支持自定义导航噢。如果是自定义导航则离开页面生命周期失效,需要自行监听

  • 暂无评论
🔝