Socket.io 在Vue SocketIO中动态加入房间
我在前端使用Vue SocketIO,希望我的应用程序根据用户输入动态加入聊天室 这个功能在软件包中还不可用(作者一直在研究它),我想知道如何将它整合在一起 我正在主应用程序文件中设置SocketIO,如下所示:Socket.io 在Vue SocketIO中动态加入房间,socket.io,vuejs2,Socket.io,Vuejs2,我在前端使用Vue SocketIO,希望我的应用程序根据用户输入动态加入聊天室 这个功能在软件包中还不可用(作者一直在研究它),我想知道如何将它整合在一起 我正在主应用程序文件中设置SocketIO,如下所示: import VueSocketIO from 'vue-socket.io' import io from 'socket.io-client'; const token = window.localStorage.getItem('token'); const socketIns
import VueSocketIO from 'vue-socket.io'
import io from 'socket.io-client';
const token = window.localStorage.getItem('token');
const socketInstance = io(require('../config/web').socket_url, {
transports: ['websocket', 'polling'],
transportOptions: {
polling: {
extraHeaders: {
Authorization: token
}
}
}
});
Vue.use(new VueSocketIO({
debug: true,
connection: socketInstance,
vuex: {
store,
actionPrefix: 'SOCKET_',
mutationPrefix: 'SOCKET_'
}
}));
在我的组件中,我尝试这样加入
selectSession () {
console.log(this.$socket)
// this.$socket.join(this.subscribedSession)
}
由于此.$socket没有联接方法,因此失败
有人知道如何破解吗?这不是
VueSocketIO
软件包的问题,甚至是socket.io客户端的问题
vue.$socket
是一个socket.io客户端
实例,因此具有本机客户端提供的所有功能
问题是您无法从客户端加入文件室,这是一个仅限于服务器端的功能
如果查看,您会发现客户机对象上没有join
方法,这不是因为他们没有实现它,而是因为它在设计上不存在
那么我该怎么解决这个问题呢?
我很高兴你问
我建议创建一个名为join
的服务器端处理程序,它将文件室名称作为参数,然后服务器将套接字连接到文件室中
const express = require("express");
const io = require('socket.io')(express());
io.on("connection", socket => {
socket.on("join", roomName => {
socket.join(roomName);
}
};
然后,您可以从客户端使用:
socket.emit("join", "chatroom1");
注意:这可能是一个安全问题。这不是VueSocketIO
软件包甚至socket.io客户端的问题。
vue.$socket
是一个socket.io客户端
实例,因此具有本机客户端提供的所有功能
问题是您无法从客户端加入文件室,这是一个仅限于服务器端的功能
如果查看,您会发现客户机对象上没有join
方法,这不是因为他们没有实现它,而是因为它在设计上不存在
那么我该怎么解决这个问题呢?
我很高兴你问
我建议创建一个名为join
的服务器端处理程序,它将文件室名称作为参数,然后服务器将套接字连接到文件室中
const express = require("express");
const io = require('socket.io')(express());
io.on("connection", socket => {
socket.on("join", roomName => {
socket.join(roomName);
}
};
然后,您可以从客户端使用:
socket.emit("join", "chatroom1");
注意:这可能是一个安全问题。谢谢。但是,他们一开始打算如何让客户加入房间?也就是说,如果我的服务器在某些房间发出信号,我的客户机如何知道如何监听它们?您只需正常地监听服务器事件。房间只存在于服务器上,客户端不知道它们在房间中,他们不应该知道。你只需要像平常一样在客户端上听,让服务器管理谁获得哪些事件。如果你给我一个更具体的例子,我可以帮你更多。房间只是一个抽象的概念,可以帮助您管理客户体验。但是,他们一开始打算如何让客户加入房间?也就是说,如果我的服务器在某些房间发出信号,我的客户机如何知道如何监听它们?您只需正常地监听服务器事件。房间只存在于服务器上,客户端不知道它们在房间中,他们不应该知道。你只需要像平常一样在客户端上听,让服务器管理谁获得哪些事件。如果你给我一个更具体的例子,我可以帮你更多。房间只是一个抽象概念,可以帮助您管理客户