微信小程序使用Socket的实例


Posted in Javascript onSeptember 19, 2017

微信小程序使用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 = false
let onSocket = null
export 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 = null
Page({
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));
    }
  }
}
});

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

Javascript 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
用JavaScript实现仿Windows关机效果
Mar 10 Javascript
基于jquery的仿百度搜索框效果代码
Apr 11 Javascript
从阶乘函数对比Javascript和C#的异同
May 31 Javascript
js实现横向伸展开的二级导航菜单代码
Aug 28 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
记一次vue-webpack项目优化实践详解
Feb 17 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
May 16 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 #Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 #Javascript
详解ES6之async+await 同步/异步方案
Sep 19 #Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 #jQuery
jquery实现倒计时小应用
Sep 19 #jQuery
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 #Javascript
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 #jQuery
You might like
php 获取select下拉列表框的值
2010/05/08 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
javascript 函数式编程
2007/08/16 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
JS常用知识点整理
2017/01/21 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
python的继承知识点总结
2018/12/10 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python实现简单飞行棋
2020/02/06 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
初中成绩单评语
2014/12/29 职场文书
获奖感言一句话
2015/07/31 职场文书
办公室规章制度范本
2015/08/04 职场文书
python中%格式表达式实例用法
2021/06/18 Python