我最近更改为连接到套接字上的名称空间。
以前,连接工作正常,我的Vuex变异正在捕获服务器发出的信息。
切换到名称空间后,我已经验证了正在建立连接并且套接字上正在触发正确的事件,但是我的Vuex突变不再触发。
以下是适用的代码:
服务器端
const complianceNamespace = IO.of("/compliance");
complianceNamespace.on("connection", function (socket) {
socket.on("UPDATE_REQUEST_SERVICE", function (requestService) {
IO.emit("UPDATE_REQUEST_SERVICE", requestService);
});
socket.on("ADD_REQUEST_SERVICE", function (requestService) {
IO.emit("ADD_REQUEST_SERVICE", requestService)
});
});
客户端
const SocketInstance = process.env.NODE_ENV === 'development' ? socketio('http://localhost:3001/compliance') : socketio('https://real.address.com/compliance');
Vue.use(new VueSocketIO({
debug: false,
connection: SocketInstance,
vuex: {
store,
actionPrefix: 'SOCKET_',
mutationPrefix: 'SOCKET_'
}
}));
// Mutation
SOCKET_UPDATE_REQUEST_SERVICE(state, requestService) {
// some code runs
}
再次,我已经验证了套接字正在到达UPDATE_REQUEST_SERVICE,但是当套接字发出时,该突变从未运行,当不使用命名空间时,它就起作用了。
我在考虑使用名称空间时前缀是否已更改或不起作用?
答案 0 :(得分:0)
答案:命名空间连接事件侦听器内的错误。
我正在使用名称空间(complianceNamespace)建立连接,然后将事件发送到另一个连接(IO)。
校正码:
complianceNamespace.on("connection", (socket) => {
socket.on("SOME_EVENT", function(user) {
complianceNamespace.emit("SOME_EVENT", user);
}
});