【发布时间】:2019-09-13 01:32:09
【问题描述】:
我很难将 websocket 数据发送到多个选项卡。我尝试了使用以下包的实现。
这是我的测试场景:
- 我打开了一个浏览器选项卡。然后我通过 websocket 发送数据。该选项卡会正确响应并查看传入的数据。
- 当 websocket 仍在发送数据时,我现在打开了第二个浏览器选项卡。第一个选项卡仍然可以看到数据并正常运行。第二个选项卡看不到从 websocket 发送的数据。
myWebsocketExample.js(sn-p显示相关代码)
const express = require('express');
const app = express();
app.ws('test', (ws) => {
ws.on('message', (msg) => {
ws.send(new Date().toString());
});
});
app.listen(9000);
myStore.js(sn-p显示相关代码)
import sharedMutations from 'vuex-shared-mutations';
mutations: {
SOCKET_ONMESSAGE(state, message) {
console.log(`Received ${message}`);
},
},
plugins: [sharedMutations({ predicate: ['SOCKET_ONMESSAGE'] })],
myTest.vue(sn-p显示相关代码)
created() {
this.$store.subscribe((mutation) => {
if (mutation.type === 'myStore/SOCKET_ONMESSAGE') {
console.log(`Received via subscription ${mutation.payload}`);
}
}
},
我做错了什么吗?这是这样做的标准模式吗?我猜这可能与在 vue-native-websockets 中调用 SOCKET_ONMESSAGE 的方式有关,因为在使用 vuex-shared-mutations 时,其他浏览器选项卡似乎不会触发它。
【问题讨论】: