尝试实施某种客户端ping:
socket.onopen = () => {
let pinger = new Promise((resolve, reject) => {
setInterval(() => {
socket.send(JSON.stringify({ "type": "ping" }))
socket.onmessage = ({ data }) => {
let jsonMessage = JSON.parse(data)
if (jsonMessage.type == 'PING') {
resolve()
} else if (jsonMessage.type !== 'PING') {
reject()
}
}
}, 10000)
})
pinger.then(() => console.log('resolved')).catch(() => console.log('error'))
}
这里遇到一个问题,怎么知道socket.send()
是否成功?这背后的想法是,如果我发送JSON对象,并且没有收到服务器的响应,则我启动方法connect()
,如果响应返回,则我将不执行任何操作。
更新了代码,现在错误仅在控制台中显示一次,尽管应该每10秒显示一次。