Fetch the repository succeeded.
npm i @i5920/uni-socket-promise -S
import UniSocketPromise from "@i5920/uni-socket-promise"
export default {
onLaunch() {
this.globalData.socket = new UniSocketPromise({
url: "ws://127.0.0.1:8080",
heartTime: 1 * 60 * 1000, // 心跳时间间隔
isHeartData: true, // 是否发送心跳
isReconnect:true, // 是否断线重连
reConnectTime: 3000, // 断线重连检测时间间隔
debug: process.env.NODE_ENV === "development", // debug
onSocketOpen: header => {},
onSocketError:res => {},
onSocketClose:res => {},
onSocketMessageAfter: (data, pool) => {
if (data.error === 0) {
pool.resolve(data);
} else {
pool.reject(data);
}
}
});
},
globalData: {
socket: null
},
// 必须在这里调用initSocket方法
onShow() {
// 连接socket
this.globalData.socket.initSocket();
// 登录
this.loginDemo();
},
methods:{
// 发送socket消息
loginDemo(){
this.globalData.socket.send("login",{
"username":"okcoder",
"password":"666666"
},{
'token':"12345"
}).then(_=>{
console.warn(_)
});
},
// 主动关闭socket
closeSocket(){
this.globalData.socket.close();
}
}
}
// 其它页面
getApp().globalData.socket.send("事件名称",{
"username":"okcoder",
"password":"666666"
}).then(_=>{
console.warn(_)
});
{
event:"标识", // 要求根据前端发送的数据进行组合加密 -> md5(事件名称字符串+参数字符串)
data:{ // 自定义数据
error:0,
data:[]
}
}
// 以PHP为列子 JSON_UNESCAPED_SLASHES + JSON_UNESCAPED_UNICODE 必须加上,比如PHP可能会对url加反斜杠,中文编码
// event的值为
md5('前端发来的事件名称' . (string)json_encode('前端发来的参数', JSON_UNESCAPED_SLASHES + JSON_UNESCAPED_UNICODE));
// data的值 自定义 比如
{
event:"****",
data:{
'error':0,
'data':[]
}
}
initSocket(success, fail)
send(event,data,extraData)
close({code,reason,success,fail,complete})
如果发送其它格式的消息直接使用uni.sendSocketMessage()
参数 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
url | string | 是 | - | websocket地址,如ws://127.0.0.1:8080
|
debug | boolean | 否 | 开发环境自动打开 | 调试开关 |
header | object | 否 | - | 参考https://uniapp.dcloud.io/api/request/websocket?id=connectsocket |
method | string | 否 | - | 参考https://uniapp.dcloud.io/api/request/websocket?id=connectsocket |
protocols | string[] | 否 | - | 参考https://uniapp.dcloud.io/api/request/websocket?id=connectsocket |
isReconnect | boolean | 否 | true | 是否断线重连 |
reConnectTime | number | 否 | 3000 | 断线重连间隔时间,毫秒 |
isHeartData | boolean | 否 | true | 是否发送心跳 |
heartTime | number | 否 | 3000 | 心跳包间隔事件,毫秒 |
回调方法 | 参数 | 说明 |
---|---|---|
onSocketOpen | callback(header) | 监听到socket打开事件 |
onSocketClose | callback(res) | 监听到socket被关闭事件 |
onSocketError | callback(res) | 监听到socket出错事件 |
onSendMessageBefore | callback(message) | 发送消息前事件,必须返回{event:"",data:''},因为要继续下面的逻辑 |
onSendMessageAfter | callback(message) | 发送消息后事件 |
onSocketMessageBefore | callback(data) | 收到消息前事件,如果返回true则继续逻辑,返回false则终止逻辑,千万注意如果要继续逻辑必须返回true |
onSocketMessageAfter | callback(data,pool) | data为接收到的数据,pool为当前线程池,含promise方法 |
v2.0.16
v2.0.14
v2.0.13
v2.0.12
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
Sign in for post a comment
Activity
Community
Health
Trend
Influence
:Code submit frequency
:React/respond to issue & PR etc.
:Well-balanced team members and collaboration
:Recent popularity of project
:Star counts, download counts etc.
Comments ( 0 )