微信小程序使用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 相关文章推荐
jquery提示 "object expected"的解决方法
Dec 13 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
new Date()问题在ie8下面的处理方法
Jul 31 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
Jun 20 Javascript
js改变css样式的三种方法推荐
Jun 28 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
Vue.js 单页面多路由区域操作的实例详解
Jul 17 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
Sep 04 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
JS立即执行的匿名函数用法分析
Nov 04 Javascript
vue项目接口域名动态获取操作
Aug 13 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中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
php中explode与split的区别介绍
2012/10/03 PHP
php代码书写习惯优化小结
2013/06/20 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
vue中轮训器的使用
2019/01/27 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
python中dir函数用法分析
2015/04/17 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
详解Django通用视图中的函数包装
2015/07/21 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python实现的归并排序算法示例
2017/11/21 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Django如何配置mysql数据库
2018/05/04 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
Python File(文件) 方法整理
2019/02/18 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
py-charm延长试用期限实例
2019/12/22 Python
美国校服网上商店:French Toast
2019/10/08 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
土木工程实习生自我鉴定
2013/09/19 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android