微信小程序Socket的实现_基于socket-io

时间: 2018-07-06阅读: 9670标签: 小程序

在小程序进行socket链接的时候发现:在1.7.0版本之前,一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。而且在连接socket的时候,发现在还没有进行subscribe的情况下,就直接进行了广播,并且自动关闭了socket连接。


下面就介绍wxapp-socket-io基于socket-io的实现:

wxapp-socket-io的安装:

npm i weapp.socket.io

或者

git clone https://github.com/wxsocketio/weapp.socket.io.git


实现步骤:

1、小程序目录新建lib目录,把weapp.socket.io.js放入里面。


2、在utils目录下新建文件sockte.js代码如下:

const io = require("../lib/weapp.socket.io.js")
const App = getApp()

let wsStatus = false
let onSocket = null

export const connect = function (cb) {
  if (!onSocket) {
    onSocket = io(App.globalData.socket)//socket的地址
    onSocket.on('connect', function (res) {
      cb(true, onSocket)
      wsStatus = true
    }) 
    setTimeout(function () {//超时
      if (!wsStatus) {
        cb(false, onSocket)
      }
    }, 10000)
  } else {
    cb(true, onSocket)
  }
}

说明:在globalData中配置socket的地址。需要注意的在开发过程中如果是http对应的是ws://,上线后为https才使用wss://。


3、在需要使用的页面。代码如下:

const socket = require("../../utils/socket.js")
videoCallSocket: function (fn) {/**判断接听,挂断,超时的Websocket */  

socket.connect((status, ws) => {
  let data = {}//数据
  this.ws = ws
  if (status) {
    ws.emit('login', JSON.stringify(data), res => {
      if (res.resultCode == 2000) {
        //登录成功
      }
    })
    ws.on('callRequest', res => {
       //code
    }
  })
},


4、判断socket链接断开

ws.on('disconnect', (reason) => { //socket断开连接
    console.log("socket断开,网络连接失败")
})


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/913

微信小程序_实现动画旋转的多种方式

三种办法实现小程序的动画效果: 每帧setData()、使用Animation实现旋转效果、使用keyfreams。在wxss中通过控制transform组件的属性,来实现旋转效果,我也是采用的这种方式,性能上面提示非常多

手把手教你写个小程序定时器管理库

后台的定时器积累得越多,小程序就越卡,耗电量也越大,最终导致程序卡死甚至崩溃。特别是团队开发的项目,很难确保每个成员都正确清理了定时器。因此,写一个定时器管理库来管理定时器的生命周期,将大有裨益。

小程序开发的一些细节,你有注意吗?

我认为小程序是一个没有什么技术含量的东西,特别是现在有了组件库,而且小程序生态不断完善的情况下,只要对着文档慢慢写就好,就是时间的问题。然后这里也不是教大家怎么去写程序之类的,而是本人在经历过后的一些小建议

使用scss开发小程序(各种小程序平台通用)

微信小程序的wxss、阿里旗下淘宝、支付宝小程序的acss等等语法很类似原生css,但是在web开发里用惯了动态css语言,再写回原生css很不习惯,尤其是父子样式的嵌套写法非常繁琐。

记一次小程序样式优化重构

在开发的过程中遇到了一些问题,但是最终减少了不少样式代码,同时功能上也更加强大。进一步来说,如果在后面我们的小程序用户想要自己定制化主题,也可以很快的实现。

通过反编译小程序来学习前端

小程序开发时,会有4种文件:.wxss .json .wxs .wxml。正式上传到腾讯时,目录会被打包,使用时再发放给客户端。这个文件包后缀是 .wxapkg。只要手机用过这个小程序,文件包就会缓存在手机内

微信小程序报错Do not have xx handler in current page的解决方法总汇

最近在做小程序开发的时候,发现小程序老是报Do not have xxx handler in current page... 惊不惊喜,意不意外,这是什么原因引起的呢?下面就整排查错误的解决办法。

微信小程序-页面跳转与参数传递

微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转。

微信小程序-自动定位并将经纬度解析为具体地址

微信小程序-微信小程序可以通过API获取当前位置的经纬度,在微信小程序开发文档中可以找到这个API的使用示例,但是需要获取具体地址就需要使用到外部的API(此处用到的是腾讯的位置服务)

微信小程序踩坑之获取手机号

最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况。研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!