rename index.js to usersocket.js
This commit is contained in:
parent
a328c0c4ff
commit
b5ff71c360
@ -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"
|
||||||
},
|
},
|
||||||
|
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user