微信小程序使用Socket的实例
微信小程序使用Socket的实例
首先,一个小程序同时只能有一个WebSocket连接,如果当前已经存在一个WebSocket连接,会关闭当前连接,并重新建立一个连接。
其次,如果使用了appID,协议必须是wss://...
最近团队用小程序做行情,在连接socket的时候,发现在还没有进行subscribe的情况下,就直接进行了广播,并且自动关闭了socket连接,
时间紧迫,抓耳挠腮,遂引用了socket-io(基于小程序的websocket仿写的socket-io,并非官方的socket-io,传送门),使用方法:
1、先在utils文件夹粘贴一个io的js
2、然后npminstallwxapp-socket-io
3、config文件夹下新建一个socket.js,对socket连接进行封装,如下:
constio=require('../utils/io.js') leturl='wss://......' letwsStatus=false letonSocket=null exportconstconnect=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、在要引用的页面调用,全局封装订阅方法
letopenSocket=require('../../config/socket') letapp=getApp() letsocket=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(){ letthat=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){ leteis=this.data[type] if(eis&&eis.length>0){ letparam={//仅供参考,根据接口自行更改 eis:eis.join(',') } socket.emit('subscribe',JSON.stringify(param)); } } } });
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!