如何获得socket.io的活动实例?

时间:2017-09-05 09:04:05

标签: rest sockets socket.io vue.js vuex

io.on('connection', socket => { })

此代码段为您提供实例'socket',但我目前需要在项目的其他位置使用该实例。

有没有办法通过正在运行的端口或类似方式访问它?

我正在尝试使用套接字更改Vuex(Vue.js)中的状态,我将其放入REST Api中的处理程序中。

1 个答案:

答案 0 :(得分:2)

正如Reiner在评论中所述,您可以尝试将套接字保存到vuex本身,以便从您的所有项目中访问它。例如:

new Vue({
    ...
    created () {
        io.on('connection', socket => {
            this.$store.dispatch('SET_SOCKET', {
                getInstance () {
                    return socket
                }
            })
        })
    }
})

不要忘记定义'SET_SOCKET'动作和突变。

然后,您就可以使用this.$store.state.socket.getInstance()

访问它了

我使用getInstance()因为如果我没记错,套接字会随着时间的推移而变异,而VueX不喜欢这样。