Copy const io = require('socket.io-client')
// room name
// the room name is the position_id, get position_id from the api (https://toilet.doc.seeed.cc/ - The list of positions)
let rn = process.argv[2] || 10
// 客户端需要做好重连策略,如服务端重启服务后,需要客户端主动再连接服务端。
const skt = io(`https://ws-toilet.seeed.cc/v1`, {
query: {
// 参数 token
token: 'toilet'
}
})
/**
* @event connect
*/
skt.on('connect', () => {
console.log('connect successfully, ', ' Socket ID: ', skt.id)
})
/**
* 加入房间,服务端消息是基于房间发送,加入房间后就能收到消息
* @event joinRoom
* @param rn: room name
* @callback status: err|true
*/
skt.emit('joinRoom', rn, function (status) {
if (status !== true) {
return
}
/**
* 离开房间(客户端需要保持长连接的时候,则不需要离开房间)
* @event leaveRoom
* @param rn: room name
* @function status: err|true
*/
skt.emit('leaveRoom', rn, function (status) {
if (status !== true) {
return
}
// 关闭连接
skt.close()
skt.disconnect()
})
})
/**
* 最新的数据
* @event latestCubicle
*/
skt.on('latestCubicle', (data) => {
console.log('latest cubicle:', data)
})
/**
* 'transport error'
* 'server namespace disconnect'
*/
skt.on('disconnect', (reason) => {
skt.close()
console.log('disconnect', reason)
})
// normal message
skt.on('message', (data) => {
console.log('message:', data)
})
skt.on('close', function (err) {
skt.close()
console.log('close', err)
})
skt.on('error', function (err) {
console.log('error', err)
})