在Atmosphere通信正常的情况下关闭浏览器,有时候会看到log出现一行错误
[qtpxxx-xx] WARN org.atmosphere.cpr.AtmosphereResourceImpl - Exception during suspend() operation xxxException
看到WARN的等级感觉应该不会有什么问题,但总觉得觉得应该有什么地方出了问题,为什么具体的错误行数被隐藏起来?
我看的是2.4.13的源码,当然现在最新版的2.6.x我也看了,一样,这块没改,问我为什么不用2.5.x,根本用不了,不知道搞了什么鬼,2.5都跑不了直接开2.6,跟scala新版本的兼容也有很大的问题,只能用老版本的scala。
打开AtmosphereResourceImpl,直接搜索Exception during suspend就能找到报错的地方,它在665行,逐行调试 发现在onDisconnect调用时报错,跟踪进入onDisconnect的位置753行,看到下面这个方法。
void onDisconnect(AtmosphereResourceEvent e) {
for (AtmosphereResourceEventListener r : listeners) {
r.onDisconnect(e);
if (transport.equals(TRANSPORT.WEBSOCKET) && WebSocketEventListener.class.isAssignableFrom(r.getClass())) {
<

本文探讨了在使用Atmosphere进行WebSocket通信时遇到的'Exception during suspend() operation'问题。尽管该警告可能在浏览器正常关闭时出现,但作者深入源码发现错误源于Disconnected监听器,可能导致日志记录、用户状态更新或消息分发等问题。尽管被认为是无害的,但作者建议针对此警告调整日志级别或特定类的日志排除,以避免混淆。此外,还讨论了Atmosphere组件的维护状况和设计问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



