首页 > 编程 > JavaScript > 正文

微信小程序使用Socket的实例

2019-11-19 15:23:02
字体:
来源:转载
供稿:网友

微信小程序使用Socket的实例

首先,一个小程序同时只能有一个WebSocket连接,如果当前已经存在一个WebSocket连接,会关闭当前连接,并重新建立一个连接。

其次,如果使用了appID,协议必须是 wss://...

最近团队用小程序做行情,在连接socket的时候,发现在还没有进行subscribe的情况下,就直接进行了广播,并且自动关闭了socket连接,

时间紧迫,抓耳挠腮,遂引用了socket-io(基于小程序的websocket仿写的socket-io,并非官方的socket-io,传送门),使用方法:

1、先在utils文件夹粘贴一个io的js

2、然后 npm install wxapp-socket-io

3、config文件夹下新建一个socket.js,对socket连接进行封装,如下:

const io = require('../utils/io.js')let url = 'wss://......'let wsStatus = falselet onSocket = nullexport const connect = function(cb){  if(!onSocket){    onSocket = io(url)    onSocket.on('connect', function (res) {      cb(true,onSocket)      wsStatus = true    })    setTimeout(function(){      if(!wsStatus){        cb(false,onSocket)      }    },10000)  }else{    cb(true,onSocket)  }}

4、在要引用的页面调用,全局封装订阅方法

let openSocket = require('../../config/socket')let app = getApp()let socket = nullPage({data: {  zl: [[422, 400, 468, 834, 785, 446, 845, 517, 630, 797, 890, 529, 553, 425, 469, 470, 837, 841, 521, 525], [422, 400, 468, 834, 785, 446, 845, 517, 630, 797, 890, 529, 553, 425, 469, 470, 837, 841, 521, 525]]},onLoad: function () {  let that = this;  //socket调用  openSocket.connect(function (status, ws) {    if (status) {      socket = ws      this.subscribe('zl')//对封装好对订阅方法进行调用      socket.on('broadcast', function (msg) {//广播        console.log("broadcast");        console.log(msg);      })    } else {      alert("socket 连接失败")    }  });},subscribe: function (type) {  if (socket) {    let eis = this.data[type]    if (eis && eis.length > 0) {      let param = {//仅供参考,根据接口自行更改        eis: eis.join(',')      }      socket.emit('subscribe', JSON.stringify(param));    }  }}});

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表