惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
V
V2EX
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Register - Security
The Register - Security
MongoDB | Blog
MongoDB | Blog
P
Privacy International News Feed
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
K
Kaspersky official blog
S
Secure Thoughts
T
Tenable Blog
Security Latest
Security Latest
The Cloudflare Blog
S
Security @ Cisco Blogs
H
Heimdal Security Blog
aimingoo的专栏
aimingoo的专栏
TaoSecurity Blog
TaoSecurity Blog
Blog — PlanetScale
Blog — PlanetScale
Microsoft Security Blog
Microsoft Security Blog
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
IT之家
IT之家
Latest news
Latest news
The Hacker News
The Hacker News
C
Check Point Blog
T
The Exploit Database - CXSecurity.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
腾讯CDC
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
N
News | PayPal Newsroom
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
S
Security Affairs
S
Securelist
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
A
About on SuperTechFans

WebSocket

如果有多个 websocket 业务需求,一般情况下后端是建立一个还是多个 websocket 更好? - V2EX webSocket 在项目运动过程中 可以时不时重新连接吗? - V2EX websocket 下载文件的原理是啥? - V2EX websocket 如何投递消息到 http - V2EX 麻烦问个 Java websocket 的性能优化问题(比较基础) - V2EX 请教一下 websocket 实现发图片的方案和保存聊天记录的方案; - V2EX 问些 websocket 的问题 - V2EX websocket 的 ping/pong 标准是需要服务器主动发 ping? - V2EX [有偿] 原生 app 开发即时通讯 关于 websocket 长链接的问题 - V2EX 请教, websockets 模块起服务, websockets.serve 的方法问题。 - V2EX 问一个 websockets 的问题 - V2EX Java 中 websocket 中 session 长久保持打开状态 - V2EX 使用 gevent 作为 Websocket 服务端,浏览器上用 setInterval 定时重复建立 Websocket,结果导致 gevent 不会自动释放之前废弃的连接,内存快要溢出了。怎么自动回收废弃连接呢 - V2EX websocket 在 springsecurity 下结合 jwt 的问题 - V2EX sync-player:使用 websocket 实现异地同步播放视频 - V2EX Websocket 直播间聊天室教程 - GoEasy 快速实现聊天室 - V2EX Uniapp 使用 GoEasy 实现 websocket 实时通讯 - V2EX 搭建 websocket 消息推送服务,必须要考虑的几个问题 - V2EX 最近在看 websocket 的聊天室功能,有个小疑问 - V2EX
WebSocket 频繁爆出异常 - V2EX
looveh · 2023-10-23 · via WebSocket

这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。

做了个 WebSocket 连接,客户端通过定时发送心跳。但是时间一长发现还是会自动断开,心跳时间是 30s 一次,ng 也做了如下配置:

proxy-read-timeout:'3600'
proxy-send-timeout:'3600'

有没有大佬出现过这种情况? 错误如下:

 java.io.EOFException: null

 	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1345)

 	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1255)

 	at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:75)

 	at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:183)

 	at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:162)

 	at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:156)

 	at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)

 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59)

 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)

 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)

 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

 	at java.base/java.lang.Thread.run(Thread.java:829)

第 1 条附言  ·  2023 年 10 月 23 日

补充一下,目前的状态是前端和后端都会互相做心跳,前端还有断线重连机制。因为某些业务需要达到 100%到达率。所以任何异常都有可能导致消息推送失败。不知道从哪里下手了😰😰😰

coderxy

1

coderxy      2023 年 10 月 23 日

断开很正常吧? 中间任何一个环节网络波动啥的都会导致断开, 做好重连不就行了?

opengps

2

opengps      2023 年 10 月 23 日

公网环境下,通信要做的就是断线自动重连,而不是一个连接用到老

stinkytofu

3

stinkytofu      2023 年 10 月 23 日

也可以找一个成熟的库, 库内部维护连接, 就不用操那么心了

skcy

4

skcy      2023 年 10 月 23 日

如果是浏览器 tab 在非激活状态,或者电脑休眠的时候,浏览器内定时器 会触发 任务 延时机制,可尝试 webworker (休眠依然无解)

nothingistrue

5

nothingistrue      2023 年 10 月 23 日

EOFException 是异常到达流尾部,这不一定是连接被断开了,你可能更需要关注 IO 流的生命周期,或者缓冲区的配置。

至于心跳,它更应该当作被断开的感知器,不应该作为连接维持的保证器。

Parva

8

Parva      2023 年 10 月 23 日

裸 websocket 手撸心跳?找些库、协议套一套吧

coyove

9

coyove      2023 年 10 月 23 日

如果是浏览器的话,tab 切换,进入后台,safari 节能模式,都可能导致 websocket 不可用。这样的策略是无法预知的,只能做好重连

0xsui

11

0xsui      2023 年 10 月 23 日 via Android

建议你用 SocketIO ,比自己写的更完善,更稳定

looveh

12

looveh      2023 年 10 月 23 日

@coderxy 前后端都有做数据流动,防止断线。但是有时候还是会有这种错误,而我们现在有个需求走这里,并且还需要送达率 100%😭

looveh

13

looveh      2023 年 10 月 23 日

@opengps 有重连的哦,但是断开那瞬间如果有消息通过就丢了,我们的业务是消息需要 100%到达

coderxy

17

coderxy      2023 年 10 月 23 日

@looveh 很正常,应该中间有很多环节都有可能把你的连接断掉, 要保证送达,该做的是离线消息。

coderxy

21

coderxy      2023 年 10 月 24 日

@looveh 实时性非常高就不应该用 tcp , 可以学游戏用 udp ,只要网络不是太废都能近实时送达。

looveh

22

looveh      2023 年 10 月 24 日

@coderxy 😂其实是这个服务已经存在了,刚好有这样的业务,并且刚好有这样一个推送的服务,所以就直接用上了。目前正在考虑使用 stomp 替换

looveh

23

looveh      2023 年 10 月 26 日

@mmdsun 大佬。用 stomp 的时候我发现每次订阅都是自动生成新的 Queue ,然后用我的订阅地址做 routingkey 关联。这样的话是不是意味着我如果有 1w 个用户(用户登录订阅)同时登录,就会在 mq 生成 1w 个队列?这怎么扛得住呢