收藏
回答

websocket接收消息相关

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 websocket 工具 6.7.3 2.0.4



如上面两张图所示,我自己封装了一个websocket的js,在首页去调用这个方法,消息接收能监听到,我在首页会点进去一个聊天页面,需要实时去渲染接收到的聊天消息,聊天消息也存入了appjs里的一个全局数组里面,但是我在聊天页最多只能在进入页面时更新数组的内容,想问问如何做到实时更新。拜谢



帮忙解决掉,私人给个红包

最后一次编辑于  2018-12-11  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • undefined
    undefined
    2018-12-11

    没有代码片段,不确定具体是什么问题

    大概猜测一下,是接收到socket推送后,只更新了app.gloalbalData,而index页面的数据没跟app.globalData同步更新。

    2018-12-11
    赞同
    回复 10
    • 叫我海哥哥
      叫我海哥哥
      2018-12-11

      同步更新了,但是我在另外一个chatRoom页面,无法实时渲染到页面上,比如我收到消息之后,我就渲染到聊天页面上

      2018-12-11
      回复
    • undefined
      undefined
      2018-12-11回复叫我海哥哥

      你确定是onSocketMessage没触发一次,页面就setData了一次吗?

      你可以把代码贴出来看看,或者做个代码片段,更直观。


      2018-12-11
      回复
    • 叫我海哥哥
      叫我海哥哥
      2018-12-11回复undefined

      主要是onsocketmessage没有放在chatRoom里面触发,是放在index触发的,这方法还不能和连接websocket的方法分开,分开了就监听不到了

      2018-12-11
      回复
    • 叫我海哥哥
      叫我海哥哥
      2018-12-11回复undefined

      https://developers.weixin.qq.com/s/GBbSZAm47G4z



      代码片段,你看一看吧

      2018-12-11
      回复
    • undefined
      undefined
      2018-12-11回复undefined

      wx.onSocketMessage(function(res) {

                //你这里貌似该存个数组吧

                app.globalData. xxx = xxx

                 let page = getCurrentPages()[getCurrentPages().length - 1];
                 if (page.newMsg) {
                     page.newMsg(res)
                 }
             })
             // chatRoom
             page({
                 newMsg(res){
                     console.log("new socket msg:",res)
                 }
             })


      我的socket 大概是这样的逻辑

      2018-12-11
      回复
    查看更多(5)
  • 叫我海哥哥
    叫我海哥哥
    2018-12-11

    坐等一个大手子回答

    2018-12-11
    赞同
    回复 1
    • 叫我海哥哥
      叫我海哥哥
      2018-12-11

      求来个人

      2018-12-11
      回复