zoukankan      html  css  js  c++  java
  • 微信小程序 websocket 封装

    微信小程序 websocket 封装

    今天又要写微信小程序,需要使用websocket,闲着没事封装一下吧,反正封装了也不会好用。

    封装 websocket

    首先在 page 文件夹下创建一个 js 文件夹存放封装的 websocket 请求,其实放哪里看自己需要,都行。
    在 js 文件夹下创建一个 websocket.js 文件,里面是封装好的 websocket 代码,其实叫啥名都行,看你心情。

    /**
     * TODO websocket封装
     * wjw
     * 2020年3月19日14:30:03
     */
    const config = require('./config.js')
    var app = getApp();
    const host = config.websocketServer; // websocket服务器baseUrl
    let sotk = null;
    let socketOpen =false;
    
    function ws_connect(reMsg){
      sotk = wx.connectSocket({
        url: config.websocketServer,
        header: {
          'content-type': 'application/json'
        }
      })
    
      sotk.onOpen(res => {
        socketOpen = true;
        // console.log('监听 WebSocket 连接打开事件。', res);
      })
      sotk.onClose(onClose => {
        socketOpen = false;
        // console.log('监听 WebSocket 连接关闭事件。', onClose)
      })
      sotk.onError(onError => {
        socketOpen = true;
        // console.log('监听 WebSocket 错误。错误信息', onError)
      })
    
      // 收到消息
      sotk.onMessage(onMessage => {
        // var data = JSON.parse(onMessage.data);
        reMsg(onMessage.data);
      })
    }
    
    function sendMsg(msg,success){
      if (socketOpen) {
        // console.log('通过 WebSocket 连接发送数据', JSON.stringify(msg))
        sotk.send({
          data: JSON.stringify(msg)
        }, function (res) {
          success(res)
        })
      }
    }
    
    module.exports.ws_connect = ws_connect;
    module.exports.sendMsg = sendMsg;
    

    在 上边文件中使用了一个config.js配置文件,我把服务器的连接扔里边了,方便维护,里面长这个逼样:

    module.exports = {
      websocketServer:'ws://121.40.165.18:8800',  // 这个地址是测试的,得改成自己的
    }
    

    使用

    首先在使用 websocket 的地方导入一下子

    var websocket = require('../js/websocket.js')  // 这是问价路径,改成自己的
    

    连接 websocket

    // 连接websocket
        websocket.ws_connect((data)=>{
          console.log(data)
        })
    

    发布消息

    websocket.sendMsg('你好,我叫wjw',(data)=>{
          console.log(1111,data);
        })
    

    差不多就是这样了,我觉得我这样封装的没意义,微信做的够好了~

  • 相关阅读:
    Debug权限提升
    QTime的本质上是一个int,QDateTime本质上是一个qint64
    QString先于QObject存在,因为QObject::objectName()返回的是QString
    C++杂记:运行时类型识别(RTTI)与动态类型转换原理
    gcc/g++编译(生动形象,从最容易入手的hello world解释了库的概念)
    分布式存储
    开源代码——Crouton
    android studio
    WebRTC
    FileProvider是个什么东西?
  • 原文地址:https://www.cnblogs.com/wjw1014/p/12525116.html
Copyright © 2011-2022 走看看