sockets - 组件中的开放式 socket 连接

标签 sockets vue.js vuex

按照官方文档vue-socketio,我在store.js中初始化了套接字。

import VueSocketio from 'vue-socket.io'
import socketio from 'socket.io-client'
Vue.use(VueSocketio, socketio(process.env.SOCKET_PATH), store)

但是套接字在打开项目后立即打开。我可以避免这个字符串Vue.use(VueSocketio, socketio(ws://somepath), store)并在我的组件中使用类似this.$socket.connect(ws://somepath)的代码。以及如何从1个客户端打开两个不同的套接字连接?

最佳答案

您可以使用html5 WebSocket。而且您不需要导入或要求它。已经提供了。您可以打开任意数量的连接。在组件的脚本中:

...
data() {
  return {
    ws1:  null,
    ws2:  null,
  }
},
mounted() {
  this.startStream1()
  this.startStream2()
},
methods: {
  startStream1 () {
    let vm           = this
    vm.ws1           = new WebSocket("wss://somepath1")
    vm.ws1.onmessage = function (event) {
      vm.$store.dispatch("handleStream", JSON.parse(event.data))

    }
    vm.ws1.onerror   = function (error) {
      console.log(error)
    }
  },
  closeStream1 () {
    this.ws1 && this.ws1.close()
  },
  startStream2() {
    let vm          = this
    vm.ws2          = new WebSocket("wss://somepath2")
    ...
  },
  ...
}

关于sockets - 组件中的开放式 socket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48868889/

相关文章:

javascript - 使用 Vue.js 在其他函数中调用 onclick 函数

javascript - 如何将以下代码转换为 vue js 代码?

javascript - Vuex,命名空间模块 setter/getter 在根 setter/getter 中不可用?

c++ - C 套接字文件传输损坏的数据

c++ - Tcp Socket recv 函数不起作用 c++

c++ - 读取或写入 boost::asio::ssl::stream::next_layer() 是否绕过 SSL 解密/加密?

vue.js - 如何重用应该使用唯一 vuex 存储实例的组件

linux - BSD套接字不工作

vue.js - Vue-test-utils 加载依赖 - Vue3

vue.js - Nuxt Vuex Store Cookie 问题