gpt4 book ai didi

javascript - node.js 和 heroku 上的 socket.io,空闲超时错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:03 31 4
gpt4 key购买 nike

我正在使用socket.io,它在本地工作得很好,但是一旦与heroku一起投入生产,它就会超时。我知道这是因为如果 55 秒滚动窗口内没有听到任何声音,heroku 将终止/超时 Web 套接字连接。

我遇到的问题是,我将 socket.io 心跳间隔设置为 60000,因此 60 秒内听不到任何声音,即在 55 秒窗口之外:

io.set('heartbeat interval', 60000); //heroku timeout with Idle connection error. 

我需要某种方式在 55 秒的窗口内轮询服务器,以保持连接处于事件状态。改变心跳间隔并不是一个真正的选择,所以我不知道如何去做。

最佳答案

一般来说,您希望路由器断开空闲连接,这样它们就不会消耗后端的系统资源。挑战在于将实际空闲/丢失的连接与已经有一段时间没有说话的实时连接的客户端分开。

一种解决方案是让客户端在 55 秒的窗口内 ping 服务器。一个例子在这里:

https://github.com/hunterloftis/websocket-ping/blob/2dd45b100a754ee8b151ab3d16d2ee3787d2dc8e/index.html#L65

https://github.com/hunterloftis/websocket-ping/blob/2dd45b100a754ee8b151ab3d16d2ee3787d2dc8e/index.html#L80-L83

基本上只是 setInterval 上的 io.emit('ping') 。这样,只要客户端还活着,它就会继续保持与服务器的连接。

关于javascript - node.js 和 heroku 上的 socket.io,空闲超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826196/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com