rename index.js to usersocket.js

This commit is contained in:
陆柯 2022-04-01 21:37:28 +08:00
parent a328c0c4ff
commit b5ff71c360
2 changed files with 29 additions and 30 deletions

View File

@ -2,7 +2,7 @@
"name": "user.websocket.uniapp", "name": "user.websocket.uniapp",
"version": "1.0.0", "version": "1.0.0",
"description": "uniapp people side websocket", "description": "uniapp people side websocket",
"main": "index.js", "main": "usersocket.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },

View File

@ -1,40 +1,40 @@
const my = { const my = {
socket : undefined, socket: undefined,
reconnecting: undefined, reconnecting: undefined,
listeners: {} listeners: {},
} }
export default { export default {
initSocket(url, reconnect=false){ initSocket (url, reconnect = false) {
if (!my.socket || my.socket.readyState!==my.socket.OPEN && typeof(url)==='string') { if (!my.socket || (my.socket.readyState !== my.socket.OPEN && typeof url === 'string')) {
console.log('WebSocket connecting...') console.log('WebSocket connecting...')
my.socket = uni.connectSocket({ my.socket = uni.connectSocket({
url: url.replace(/^http/, 'ws'), url: url.replace(/^http/, 'ws'),
complete: ()=>{} complete: () => {},
}) })
my.socket.onOpen((res)=>{ my.socket.onOpen((res) => {
console.log('WebSocket onOpen: ', res) console.log('WebSocket onOpen: ', res)
clearInterval(my.reconnecting) clearInterval(my.reconnecting)
delete my.reconnecting delete my.reconnecting
if (reconnect && uni.getStorageSync('_passtoken')) { if (reconnect && uni.getStorageSync('_passtoken')) {
console.log('Reporting owner for reconnecting socket') console.log('Reporting owner for reconnecting socket')
my.socket.send({data: JSON.stringify({skevent:'SOCKET_OWNER', _passtoken: uni.getStorageSync('_passtoken')})}) my.socket.send({ data: JSON.stringify({ skevent: 'SOCKET_OWNER', _passtoken: uni.getStorageSync('_passtoken') }) })
} }
}) })
my.socket.onClose((res)=>{ my.socket.onClose((res) => {
console.log('Websocket onClose: ', res) console.log('Websocket onClose: ', res)
if (!my.reconnecting) if (!my.reconnecting)
my.reconnecting = setInterval(()=>{ my.reconnecting = setInterval(() => {
console.log(new Date().toJSON(), 'WebSocket reconnecting...') console.log(new Date().toJSON(), 'WebSocket reconnecting...')
this.initSocket(url, true) this.initSocket(url, true)
}, 5000) // 每5秒尝试重连 }, 5000) // 每5秒尝试重连
}) })
my.socket.onError((err)=>{ my.socket.onError((err) => {
console.log('Websocket onError: ', err) console.log('Websocket onError: ', err)
}) })
my.socket.onMessage(({data})=>{ // 在这里统一分发消息(用户端通常不需要返回结果给服务器,因此不用 rpc 模式,而用 event 模式。 my.socket.onMessage(({ data }) => {
// 在这里统一分发消息(用户端通常不需要返回结果给服务器,因此不用 rpc 模式,而用 event 模式。
try { try {
let dataObj = JSON.parse(data) let dataObj = JSON.parse(data)
console.log('WebSocket onMessage for skevent: ', dataObj.skevent) console.log('WebSocket onMessage for skevent: ', dataObj.skevent)
@ -42,41 +42,40 @@ export default {
for (let listener of listeners) { for (let listener of listeners) {
listener(dataObj) listener(dataObj)
} }
}catch(exception){ } catch (exception) {
console.log(new Date().toJSON(), 'unknown message', data) console.log(new Date().toJSON(), 'unknown message', data)
return return
} }
}) })
} }
return this return this
}, },
closeSocket(){ closeSocket () {
if (my.socket) my.socket.close() if (my.socket) my.socket.close()
setTimeout(()=>{ setTimeout(() => {
clearInterval(my.reconnecting) clearInterval(my.reconnecting)
delete my.reconnecting delete my.reconnecting
}, 2000) }, 2000)
}, },
addListener(skevent, listener){ addListener (skevent, listener) {
if (Array.isArray(my.listeners[skevent]) && typeof(listener)==='function') { if (Array.isArray(my.listeners[skevent]) && typeof listener === 'function') {
my.listeners[skevent].push(listener) my.listeners[skevent].push(listener)
}else { } else {
my.listeners[skevent]=[listener] my.listeners[skevent] = [listener]
} }
return this return this
}, },
countListener(skevent){ countListener (skevent) {
if (Array.isArray(my.listeners[skevent])) { if (Array.isArray(my.listeners[skevent])) {
return my.listeners[skevent].length return my.listeners[skevent].length
} }
return 0 return 0
}, },
sendObject(dataObj){ sendObject (dataObj) {
if (my.socket && my.socket.readyState===my.socket.OPEN){ if (my.socket && my.socket.readyState === my.socket.OPEN) {
my.socket.send({ my.socket.send({
data: typeof(dataObj)!=='string' ? JSON.stringify(dataObj) : dataObj data: typeof dataObj !== 'string' ? JSON.stringify(dataObj) : dataObj,
}) })
} }
} },
} }