【发布时间】:2018-12-02 20:19:17
【问题描述】:
这是我打开/关闭套接字连接的方法:
methods: {
connect () {
this.$socket.onopen = () => {
this.status = 'connected'
this.$socket.onmessage = ({data}) => {
this.$socket.send(this.message)
console.log({ event: "Recieved message", data })
}
}
this.$socket.onclose = (e) => {
console.log('Socket is closed. Reconnect will be attempted in 1 second.')
setTimeout(() => {
this.connect()
}, 1000)
}
},
disconnect () {
this.$socket.close()
this.status = 'disconnected'
}
}
我没有使用 socket.io 等,只是内置在 Websocket 对象中。
当我手动调用disconnect () 方法时 - 它按预期关闭连接,但是当我再次发送消息时 - 它说连接已关闭。由于我在挂载中调用connect (),因此如果我不刷新页面,它将不会重新连接。
我尝试过使用观察者:
watch: {
'$socket': 'connect'
}
但是没有效果。有没有办法监视 websocket 连接状态?如果它已关闭 - 调用 connect (),如果它出错 - 调用 connect () 重新连接它。
【问题讨论】:
-
内置 WebSocket 对象使用就绪状态,就像其他 HTML API 一样。您可以收听 readystate 3 - 已关闭。然后创建一个新连接。
-
你的意思是在观察者中?
标签: javascript vue.js