收藏
回答

【小程序】websocket学习疑难

最近在学习websocket遇到一些问题:(我是用websocket做一个聊天的demo,目前只在模拟器上运行。)

  1. 1.怎么在关闭聊天页面的时候就关闭websocket连接


  2. 2.如图。点击返回重新进来,连接还在,能接受发送信息。另外一端可以收到,但是小程序端就是更新不到数据



    onShow: function() {

      if (!socketOpen) {

      this.websocket()

    }},

    onShow里是这样的判断。不加socketOpen判断的话,超过连接两次就会报错


  3. 3. onHide和onUnload 都有写

    wx.closeSocket({

    success:function(res) {

    socketOpen = false

    console.log('WebSocket 已关闭!')

    }

    })

    当我返回上个页面时console打印了一个onUnload的websocket关闭。重新进去后它websocket连了第二个


    再返回重进一次就报错



文档里写的理解不太清楚 求大佬指教!!!



=========================================================================



onClose返回1006该怎么解决呀!!!!


最后一次编辑于  01-10
回答关注问题邀请回答
收藏

3 个回答

  • soriqe
    soriqe
    01-10

     var socketTask;

    Page({

            /**  * 页面的初始数据  */

            data: { },

            

            /**  * 生命周期函数--监听页面加载 */

            onLoad: function (options) {

                    this.WebSocket(this)

            },

           

            /** 生命周期函数--监听页面卸载 */

            onUnload: function () {

                console.log('onUnload')

                socketTask.close();

            },

            

            WebSocket(e) {

                socketTask = wx.connectSocket({

                        url: 'ws://123.207.167.163:9010/ajaxchattest'

                })

            

                socketTask.onOpen(function (res) {

                    console.log('WebSocket连接已打开!')

                    socketTask.send({

                            data: 'on'

                    })

                })

            

                socketTask.onMessage(function (message) {

                    console.log('message', message)

                })

                

                socketTask.onClose(function (res) {

                    console.log('WebSocket连接已关闭!')

                })

            }

    })


    01-10
    赞同
    回复
  • small & significant
    small & significant
    01-10

    你onhide 和 onunload 方法里打印一下close函数的回调res看看啊   到底关了没

    01-10
    赞同
    回复 3
    • xat
      xat
      01-10

      关闭了,onClose的code有异常,code:1006


      01-10
      回复
    • small & significant
      small & significant
      01-10回复xat

      你去看一眼文档看看这个1006有什么影响

      01-10
      回复
    • xat
      xat
      01-10回复small & significant

      文档没有吧,只是说1000才是正常关闭。而且这段示例代码啥意思也没懂


      01-10
      回复
  • Stephen
    Stephen
    01-10

    onHide

    01-10
    赞同
    回复 1
    • xat
      xat
      01-10

      我onHide和onUnload都有写

      wx.closeSocket({

      success:function(res) {

      console.log('WebSocket 已关闭!')

      }

      })

      可连接还是没关闭


      01-10
      回复