【问题标题】:connect to socket.io from Vue.js component从 Vue.js 组件连接到 socket.io
【发布时间】:2023-03-19 07:22:01
【问题描述】:

假设我有两台服务器(express 用于服务我的 Vue SPA [端口 8080],express+ 套接字作为 API [端口 8082])。

我想打开套接字连接,以防用户通过身份验证(在 ajax 中针对运行在端口 8082 上的服务器进行身份验证)。

假设用户登录后,应用重定向到主页。 我创建了 Home.vue 组件,我尝试(在创建的钩子内)为客户端导入 socket.io 脚本并打开连接:

<template>
  <div>
    Home
  </div>
</template>

<script>
import config from '../../../config/env'
export default {
  data() {
    return {

    }
  },
  
  created() {
    var scriptElement = document.createElement('script')
    scriptElement.type = "text/javascript"

    scriptElement.src = `http://${config.baseSocketUrl}/socket.io/socket.io.js`
    document.getElementsByTagName("head")[0].appendChild(scriptElement);

    scriptElement.onload(() => {
      const socket = io(config.crmSocket_nsp)

      socket.on('welcome', (data) => {
        alert(data)
      })
    })
  }
}

</script>

<style lang="scss" scoped>

</style>

不顺利^^'

所以我试图将脚本标记硬编码在应用程序安装的 index.html 文件中(),然后使用相同的方法在创建的生命周期挂钩内连接套接字。然而并不顺利。 这里的io是未定义的!

任何方向都会得到祝福! 谢谢大家!

【问题讨论】:

  • 你是在使用 webpack 还是其他东西来构建你的 vue 应用程序?您可能需要在那里需要 io 或将其添加到窗口中

标签: javascript node.js sockets socket.io vue.js


【解决方案1】:

它应该在 beforeMount() 而不是 created() 阶段工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2014-09-12
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多