【发布时间】:2020-11-27 11:27:46
【问题描述】:
我在 Svelte 中有一个可读存储,如下所示:
const state = {};
export const channels = readable(state, set => {
let st = state;
let socket = new WebSocket("ws://127.0.0.1:5999");
socket.onmessage = function (event) {
var datastr = event.data.split(':');
st[datastr[0]].value = datastr[1];
st[datastr[0]].timestamp = Date.now();
set(st)
};
return () => {
socket.close()
}
});
当我将它导入我的 Svelte 应用程序时。但是如果我把那个 App.svelte 作为我在 Sapper 上运行的 index.svelte,它一开始就不起作用。它说错误 500 websocket 未定义。一旦我在浏览器中重新加载页面开始工作...... 我试图解析一个创建商店的函数:
export const getChannel = () => {
// here my store
return {...store}
}
然后像这样在 onMount() 中创建商店:
onMount( ()=> {
const channel = getChannel();
});
但似乎没有奏效......我错过了什么? 注意:如果只是用简单的可写替换存储,并创建 websocket onMount(),它可以正常工作。我只是想把商店内的所有通信都作为可读的......
【问题讨论】:
标签: javascript websocket svelte sapper