我最近改用连接到套接字上的命名空间。以前连接工作正常,我的 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,但是当套接字发出时,突变永远不会运行,它在不使用命名空间时工作。
我在想前缀被更改或在使用命名空间时不起作用?