【发布时间】:2019-12-18 10:34:23
【问题描述】:
我目前正在使用包含 Vue 和 Vuex 的 Quasar V1 框架。 今天我在看这个插件: https://www.npmjs.com/package/vue-native-websocket/v/2.0.6
我不确定如何设置这个插件并使其工作,需要一点帮助来确保我做对了,因为这将是我第一次将 WebSockets 与 Vue 一起使用。
我首先通过 npm 安装了 vue-native-websocket 并创建了一个名为 src\boot\websocket.js 的引导文件
通过这个命令:
npm install vue-native-websocket --save
websocket.js
import VueNativeSock from 'vue-native-websocket';
export default async ({ Vue }) => {
Vue.use(VueNativeSock, 'wss://echo.websocket.org', {
reconnection: true,
reconnectionAttempts: 5,
reconnectionDelay: 3000
});
};
在 Quasar v1 中,我随后在以下位置创建了一个名为“websockets”的模块:
src\store\websockets
这个模块有:
actions.js
getters.js
index.js
mutations.js
state.js
我需要使用格式为 'json' 的 websocket
我的问题是:
假设我有一个页面,我希望在其中创建我的 websocket 连接并接收实时数据,我应该这样做吗?
模块代码: websockets/mutations.js:
export function SOCKET_ONOPEN (state, event) {
let vm = this;
vm.prototype.$socket = event.currentTarget;
state.socket.isConnected = true;
}
export function SOCKET_ONCLOSE (state, event) {
state.socket.isConnected = false;
}
export function SOCKET_ONERROR (state, event) {
console.error(state, event);
}
// default handler called for all methods
export function SOCKET_ONMESSAGE (state, message) {
state.socket.message = message;
}
// mutations for reconnect methods
export function SOCKET_RECONNECT (state, count) {
console.info(state, count);
}
export function SOCKET_RECONNECT_ERROR (state) {
state.socket.reconnectError = true;
}
模块代码: websockets/state.js
export default {
socket: {
isConnected: false,
message: '',
reconnectError: false
}
};
但现在问题出在我的 vue 页面中。
假设我只想显示来自 websocket 的具有特定事件的数据,请问如何从 vue 页面本身调用它?我对插件的这一部分很困惑。
了解如何分离接收和发送数据对我来说非常重要。 ie:我可能想收到很多用户的列表 或者我可能想收到所有新闻的列表 或者我可以在数据库中添加一个新用户。
我不断听到有关频道、活动和订阅的消息...... 据我了解,您必须先订阅一个频道(即:wss://mywebsite.com/news),然后监听事件,在这种情况下,我相信事件只是来自该频道的数据流)。
如果我对上述内容正确,请问如何订阅频道并使用此插件收听事件,有什么想法吗?
如果你有一个非常简单的例子,那就太好了,谢谢。
【问题讨论】:
标签: vue.js websocket socket.io vuex