Qyouu
2022-09-23 16:58:17
例如,如果我得到這個(gè)網(wǎng)站插座:let itemsArray = [];function fetchData() { itemsArray = await db.query(`SELECT * FROM Items`);}function emitData() { io.sockets.in("room_foo").emit("data", JSON.stringify(itemsArray));}setInterval(() => fetchData(), 2500);setInterval(() => emitData(), 5000);基本上這意味著以下內(nèi)容:每5秒流式傳輸?shù)絩oom_foo JSON數(shù)組中的所有客戶端,每2,5秒獲取數(shù)據(jù)現(xiàn)在,這就是問(wèn)題所在。當(dāng)我連接到該WebSocket時(shí),我必須等待5秒鐘,直到下一個(gè)發(fā)出事件發(fā)生。有沒(méi)有辦法將之前的響應(yīng)緩存為X秒(在此特定情況下為5秒),并在有人連接時(shí)一直發(fā)出該響應(yīng),這樣他們就不會(huì)有這樣的延遲?即使新用戶連接(他們沒(méi)有瀏覽器緩存) - 我的意思是服務(wù)器緩存
1 回答

溫溫醬
TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
let itemsArray = [];
function fetchData() {
itemsArray = await db.query(`SELECT * FROM Items`);
io.sockets.in("room_foo").emit("data", JSON.stringify(itemsArray));
}
setInterval(() => fetchData(), 2500);
io.on('connection', (socket) => {
// if user gets in to room_foo then send it so
socket.join('room_foo', () => {
io.sockets.in("room_foo").emit("data", JSON.stringify(itemsArray));
})
});
所以加入回調(diào)功能使用它:)
也許像這樣更新你的代碼?
添加回答
舉報(bào)
0/150
提交
取消