首頁 >微信小程式 >小程式開發 >實例詳解微信小程式如何使用Socket

實例詳解微信小程式如何使用Socket

小云云
小云云原創
2018-05-29 10:45:406121瀏覽

本文主要和大家介紹微信小程式使用Socket的實例的相關資料,希望透過本文能幫助到大家,需要的朋友可以參考下,希望能幫助到大家。

微信小程式使用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));
    }
  }
}
});

#相關推薦:

HTML5 WebSocket點對點聊天實作方法

#node.js 用socket實作聊天實例分享

詳解php實作socket推送技術

以上是實例詳解微信小程式如何使用Socket的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn