【发布时间】: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