更新记录
1.0.4(2023-07-06) 下载此版本
增加业务说明
1.0.3(2023-07-06) 下载此版本
增加初始化说明
1.0.2(2023-07-06) 下载此版本
更新文件引入方式
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.1.0 app-vue app-nvue | √ | √ | √ | √ | √ | √ |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
√ | √ | √ | √ |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | √ |
店滴云物联网 websocket 插件API文档
店滴云,让经营场所,更智能。围绕茶室、酒店、健身房、公寓、出租房等经营性场所进行物联网改造。同时支持多种物联网通信协议,开放智能门锁,智能开关,智能手环的sdk供开发者使用。
官方地址
开发者参与
qq群
:823429313,点击可直接加入:开发者交流群
微信公众号
使用
需引入并创建一个socket实例,创建完成后你将得到一个uni.socket对象
import UniSocket from "@/uni_modules/ddiot-websocket/js_sdk/ddiot_websocket.js"
const socket = new UniSocket({
url: "ws://82.156.131.85:9501/", //店滴云物联网服务器
heartRateType: 'heart',
heartRate: 60000,
username: ' ', //店滴云开发者账户
password: ' ',//店滴云开发者密码
AppKey: ' ', //店滴云开发者AppKey
AppSecret: ' '//店滴云开发者AppSecret
})
参数
参数 | 描述 |
---|---|
url | 服务器地址 |
reconnection | 发送错误时是否进行重连,默认true |
buffer | 是否建立缓存池,当发送消息失败时会吧消息保存到缓存池等待下次发送 |
heartRate | 系统自动与将程序心跳发送至服务端,默认60000ms |
heartRateType | 设置心跳触发的事件,默认触发HEARTBEAT 事件 |
autoEmitBuffer | 是否自动发送缓存池中的数据,默认false |
方法
on
on方法是一个为uni.socket注册自定义事件的方法,该事件将通过你服务器传回的数据触发,因此,你服务器数据返回的格式必须遵守约定。
socket.on('event', Function(data){
// .... 在此处理服务器发给你的邮件data
})
服务器返回的数据必须遵守该格式才能保证正常使用:
{type: 'event', data: {}}
data
未必是Object格式,它可以是任意格式,但必须拥有type
和data
,type
是服务器与你的约定,它将去使用你注册的事件驱动,也就是说,uni.socket是通过type
字段来进行触发你自定义的事件驱动的。
如果你的第三个参数为true
,那么uni.socket则会检查该事件驱动是否已被注册,如果未被注册,则将它进行注册,默认false
socket.on('event', Function, true);
off
撤销注册的事件驱动,在uni.socket中,强制每个页面退出、关闭时调用此方法,因为uni.socket无法处理移除页面存在时注册过的事件驱动从而导致的内存泄漏。
socket.off('event', handler);
此方法支持连续注销驱动。
socket.off('event', handler1)('event', handler2)('event', handler3);
例如:
export default {
methods: {
hello() {
...
}
},
onLoad() {
socket.on('hello', this.hello);
},
onUnload() {
// 监听页面卸载
// 页面退出,撤销hello,释放资源
socket.off('hello', this.hello);
}
}
removeEventByName
移除你自定义的事件,因为是危险操作,需要开发者进行二次提交
移除自定义事件包括任何给这个事件注册的驱动
socket.removeEventByName('event').then(commit => {
commit();
});
addBuffer
给缓存池添加数据
socket.addBuffer({type: 'event', data: {}})
getBuffer
获取缓存池
const buffer = await socket.getBuffer();
// or
socket.getBuffer().then(buffer => {
// ...处理你的缓存池
});
getState
获取连接状态0 表示连接中,1表示连接成功,2表示重连中,3表示失败
const state = await socket.getState();
// or
socket.getState().then(state => {
// ...处理你状态
});
killApp
结束心跳,心跳结束后,uni.socket除了心跳发送,在下一次发送心跳时间内,其它功能正常使用,需要后端进行处理
socket.killApp();
close
关闭与服务器的连接,注意,它不会触发error
事件
socket.close();
emit
给服务器发送消息
socket.emit('event', {msg: "hello world"});
关于心跳
uni.socket需向服务器定时发送一次心跳,其触发的事件为HEARTBEAT
,默认心率为60000ms,服务器可根据该事件进行处理,可修改配置进行修改触发事件heartRateType
:
new UniSocket({
url: "wss://127.0.0.1/",
heartRateType: "Your event name..."
});
关于心跳会触发两次的问题,因为uni.socket发送的时候会触发一次心跳事件,而接收到服务端心跳的时候也会触发一次心跳事件。
系统事件
虽然是系统事件,但它和你自定义的事件并无区别,只是uni.socket赋予了它们特别的使命
事件 | 描述 | 返回值描述 |
---|---|---|
error | 错误事件,当socket连接发生错误时会触发 | 错误描述 |
reconnectionerror | 重连过程中发生的错误 | 错误描述 |
connectioned | 连接成功时触发 | 无 |
* | 服务器给客户端发送任何消息时触发 | 客户端消息 |
** | 后端返回的数据格式违背与UniSocket的约定时触发 | 客户端消息 |
HEARTBARE | 每次向服务端发送一次心跳时触发 | uni.socket给你返回的垃圾消息 |