有没有办法缓存 Socket.IO 响应?

例如,如果我得到这个网站插座:


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);

基本上这意味着以下内容:每5秒流式传输到room_foo JSON数组中的所有客户端,每2,5秒获取数据


现在,这就是问题所在。当我连接到该WebSocket时,我必须等待5秒钟,直到下一个发出事件发生。


有没有办法将之前的响应缓存为X秒(在此特定情况下为5秒),并在有人连接时一直发出该响应,这样他们就不会有这样的延迟?即使新用户连接(他们没有浏览器缓存) - 我的意思是服务器缓存


Qyouu
浏览 88回答 1
1回答

温温酱

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));  })});所以加入回调功能使用它:)也许像这样更新你的代码?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript