为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2022-09-23 16:58:17

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


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秒),并在有人连接时一直发出该响应,这样他们就不会有这样的延迟?即使新用户连接(他们没有浏览器缓存) - 我的意思是服务器缓存


查看完整描述

1 回答

?
温温酱

TA贡献1441条经验 获得超2个赞

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

  })

});

所以加入回调功能使用它:)


也许像这样更新你的代码?


查看完整回答
反对 回复 2022-09-23
  • 1 回答
  • 0 关注
  • 9 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信