微信小程序使用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 相关文章推荐
Prototype使用指南之dom.js
Jan 10 Javascript
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
Javascript学习笔记二 之 变量
Dec 15 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
javascript里使用php代码实例
Dec 13 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
多种方式实现js图片预览
Dec 12 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
如何HttpServletRequest文件对象并储存
Aug 14 Javascript
js代码编写无缝轮播图
Sep 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 表单数据的获取代码
2009/03/10 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
纯js分页代码(简洁实用)
2013/11/05 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
python中bisect模块用法实例
2014/09/25 Python
python中引用与复制用法实例分析
2015/06/04 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python安装requests库的实例代码
2019/06/25 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
婚宴邀请函
2015/01/30 职场文书
2015国庆节感想
2015/08/04 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
MySQL触发器的使用
2021/05/24 MySQL
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python