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

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

在小程序进行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断开,网络连接失败")
})


微信小程序不支持Echarts中tooltip的解决方法

Echarts官方文档明确指出自己不支持微信小程序中使用Tooltip这个功能。但是只要做过图表设计的人都知道,Tooltip这个功能有多么重要,尤其是对于line图而言。那么如何解决或者说间接实现tooltip呢?

如何微信小程序禁止下拉_解决小程序下拉出现空白的情况

在微信小程序中,用力往下拉动,页面顶部会出现一段空白的地方。 产品的需求不太允许这么做,会影响用户体验,查看文档发现可以使用enablePullDownRefresh这属性来实现,但是在部分ios端仍然可以下拉出现空白。那么该如何解决呢?

小程序框架_推荐多款高质量的小程序框架组件

小程序到底有多火,看看目前推出的开源框架以及组件库就知道了。由于小程序开发的火爆,大家都在致力于探索如何更好的,更加高效的开发小程序,以至于很多公司都贡献了小程序开源框架和组件库。 如: mpvue、Tina.js、Taro、wepy、weweb、touchwx

扩展微信小程序 Page 构造函数,修改生命周期函数

微信小程序扩展: 将公共方法绑定到Page上、扩展,修改生命周期函数。将自定义的内容单独封装到一个js文件中,然后在app.js中引用这个文件即可

微信小程序视图层处理增强之WXS

WXS算是专供WXML调用的有独立作用域的JS模块(不是全功能的JS,感觉有所限制)。举个例子,在这之前,我们是没有办法在WXML的数据绑定括号{{}}中调用JS函数的,所以在WXML层面就缺少了进一步做数据处理的能力。

小程序分享海报的实现

小程序分享到朋友圈只能使用小程序码海报来实现,生成小程序码的方式有两种,一种是使用后端方式,一种是使用小程序自带的canvas生成;后端的方式开发难度大,由于生成图片耗用内存比较大对服务端也是不小的压力;

web view内嵌的h5页面与小程序直接相互跳转的实现

在小程序中使用web-view组件嵌套的H5页面,如何实现和小程序页面之间的相互跳转呢?下面就简单介绍下如何实现的,希望能帮助到您

小程序开发实践总结

从微信发布小程序以来,各大公司纷纷跟进都想从微信这个流量池里捞一杯羹。前前后后也开发了四五个小程序了。总觉得要留下点什么,既是记录那些年我们踩过的坑,也是希望大家别再掉坑。

微信小程序如何实现跳转到其它小程序的功能

微信小程序目前已经支持跳出到其它小程序了。但是前提是2个小程序必须被同一个公众号关联,如果没有关联则无法打开,下面就实现小程序之间相互跳转的步骤。

把微信小程序异步API为Promise,简化异步编程

把微信小程序异步API转化为Promise。用Promise处理异步操作有多方便,谁用谁知道。微信官方没有给出Promise API来处理异步操作,而官方API异步的又非常多.