我是 vue 的初学者并创建了我的第一个应用程序。我使用 vuex,并且我有一个插件来管理服务器的 webSocket。只要我只处理从服务器发送到浏览器的消息,一切正常。
我现在想添加一个函数,如果已连接,则通过套接字发送消息,但我无法访问导出的函数。我也是 Javascript 编程的初学者。
这是插件代码:
var store = null;
var ws = null;
function startWebsocket() {
ws = new WebSocket(process.env.VUE_APP_WEBSOCKET_URL)
ws.onmessage = function (event) {
console.log("webSocket: on message: ", event.data);
store.dispatch('remoteMessage', event.data);
}
ws.onopen = function (event) {
console.log("webSocket: on open: ", event)
store.dispatch('connectionOpened');
}
ws.onclose = function (event) {
console.log("webSocket: on close: ", event)
store.dispatch('connectionClosed');
ws = null
setTimeout(startWebsocket, 5000)
}
ws.onerror = function (event) {
console.log("webSocket: on error: ", event)
}
}
export default function createWebSocketPlugin() {
return store_param => {
store = store_param;
startWebsocket();
};
}
我想将以下函数添加到插件中,以便我可以从 vuex 操作函数中调用它。
export function sendWebSocketMsg(msg) {
if (ws) {
ws.sendMsg(msg)
}
}
在 vuex index.js 文件中,我有这个:
. . .
import webSocket from '../plugins/webSocket'
. . .
export default new Vuex.Store({
. . .
actions: {
connectionOpened({ commit }) {
commit('SET_CONNECTION', true);
},
connectionClosed({ commit }) {
commit('SET_CONNECTION', false);
},
connectionError({ commit }, error) {
commit('SET_ERROR', error);
},
remoteMessage({commit}, message) {
commit('SET_MESSAGE', message);
},
pause() {
sendWebSocketMsg('{"pause":true}')
},
play() {
sendWebSocketMsg('{"pause":false}')
}
}
}
webSocket 运行良好并自动重新连接。
我唯一缺少的是发送 webSocket 消息的能力。
如何修改 webSocket 插件?