72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
// Nakama SDK 小程序适配器
|
|
// 将 uni-app 的 connectSocket 和 Storage 适配到 Web 标准接口
|
|
|
|
export const WebSocketAdapter = {
|
|
build: function (url) {
|
|
const socketTask = uni.connectSocket({
|
|
url: url,
|
|
complete: () => { }
|
|
});
|
|
|
|
const webSocket = {
|
|
url: url,
|
|
readyState: 0, // CONNECTING
|
|
onopen: null,
|
|
onclose: null,
|
|
onerror: null,
|
|
onmessage: null,
|
|
send: (data) => {
|
|
socketTask.send({
|
|
data: data
|
|
});
|
|
},
|
|
close: () => {
|
|
socketTask.close();
|
|
}
|
|
};
|
|
|
|
socketTask.onOpen(() => {
|
|
webSocket.readyState = 1; // OPEN
|
|
if (webSocket.onopen) {
|
|
webSocket.onopen({ type: 'open' });
|
|
}
|
|
});
|
|
|
|
socketTask.onClose((res) => {
|
|
webSocket.readyState = 3; // CLOSED
|
|
if (webSocket.onclose) {
|
|
webSocket.onclose({ code: res.code, reason: res.reason, wasClean: true });
|
|
}
|
|
});
|
|
|
|
socketTask.onError((err) => {
|
|
if (webSocket.onerror) {
|
|
webSocket.onerror({ error: err, message: err.errMsg });
|
|
}
|
|
});
|
|
|
|
socketTask.onMessage((res) => {
|
|
if (webSocket.onmessage) {
|
|
webSocket.onmessage({ data: res.data });
|
|
}
|
|
});
|
|
|
|
return webSocket;
|
|
}
|
|
};
|
|
|
|
export const localStorageAdapter = {
|
|
getItem: (key) => {
|
|
return uni.getStorageSync(key);
|
|
},
|
|
setItem: (key, value) => {
|
|
uni.setStorageSync(key, value);
|
|
},
|
|
removeItem: (key) => {
|
|
uni.removeStorageSync(key);
|
|
},
|
|
clear: () => {
|
|
uni.clearStorageSync();
|
|
}
|
|
};
|