微信小程序使用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 相关文章推荐
javascript编程起步(第六课)
Jan 10 Javascript
jquery之Document元素选择器篇
Aug 14 Javascript
jquery获取input表单值的代码
Apr 19 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
vue-devtools的安装和使用步骤详解
Oct 17 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 Javascript
js实现碰撞检测
Jan 29 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里得到前天和昨天的日期的代码
2007/08/16 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python画微信表情符的实例代码
2019/10/09 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
教师群众路线剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
python实现简单的名片管理系统
2021/04/26 Python
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS