在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())) {
WebSocketEventListene