87,996
社区成员
发帖
与我相关
我的任务
分享<script>
import Vue from "vue";
import VueSocketIO from "vue-socket.io";
import SocketIO from "socket.io-client";
Vue.use(
new VueSocketIO({
debug: true,
connection: SocketIO("http://127.0.0.1:5000"),
})
);
export default {
name: "ZuJian",
sockets: {
connect: function () {
console.log(this.$socket);
console.log("client connent socket.id=" + this.$socket.id);
},
}
我开始用VueSocketIO,后来换成socket.io-client,后来重新新建了一个工程,看上去都还是一个socket(ids:0)。发现它没有.id属性,我怀疑是不是版本的问题,把socket.io-client从3.1.0降成了2.4.0,还是一样的结果
我注册了三个测试组件,确实获得了三个不同的socket.id,和你说下我的做法,我是没有在main.js引入的,在需要用到的页面才引入,例如

感觉还没有用到vuex
不行,在组件的created函数里,或者在组件的按钮上点击后的方法里new VueSocketIO() ,每个组件都会有上面这段提示,并且没有触发sockets里的connect方法。
我同时十几个格子,用全局socketio。我不是做聊天的功能,主要是想用websocket的双工模式,连上后,flask隔一段时间就往前台上报一些数据,结果动不动就断开连接了,暂时还不清楚是哪里导致的断开,打算再看点文章例子后再尝试在组件创建函数里面new VueSocketIO()试试,不过挺好奇你为什么需要每个组件单独连接的