javascript无限请求_SockJS - >重新连接后无限xhr-streaming呼叫

即时通过SockJS和Spring websockets作为后端使用Stomp。偶尔,我的单块客户端重新连接后会出现问题(无线网络丢失,服务器故障,其他问题)。连接完全恢复,但通过浏览器网络可以看到几秒钟SockJS客户端如何尝试发送xhr-streaming与旧的会话ID。后端用关闭帧c响应[1000,“Go Away!”]应用程序仍然可以工作,但是这个问题会加载CPU并使应用程序变慢。SockJS - >重新连接后无限xhr-streaming呼叫

我可以关闭并启动服务器几次(并不总是会发生)。我不能理解SockJS是如何重新连接的(我们从0开始销毁和创建Sockjs实例)发送xhr-streaming请求与旧会话的id(维护预重连接id会话?内存泄漏?)。我想保持它重新连接后,Sockjs没有任何状态,并始终从头开始。

后台日志:

2016-05-02 21:45:01.943 DEBUG [http-nio-8090-exec-7] o.s.w.s.s.t.h.XhrStreamingTransportHandler - Connection already closed (but not removed yet) for XhrStreamingSockJsSession[id=ypsjtids]

客户端日志:

(新的会话ID - > h2pystok,旧会话ID - > ypsjtids)

<<< PONG

browser.js:120 sockjs-client:buffered-sender send +45ms "\n"

browser.js:120 sockjs-client:buffered-sender sendSchedule +0ms 1

browser.js:120 sockjs-client:ajax-based create ajax sender +2ms http://localhost/eess-services/stomp/355/h2pystok ["\n"]

browser.js:120 sockjs-client:browser:xhr POST +0ms http://localhost/eess-services/stomp/355/h2pystok/xhr_send

ws.js:216 >>> PING

browser.js:120 sockjs-client:browser:xhr withCredentials +2ms

browser.js:120 sockjs-client:browser:xhr readyState +18ms 4

browser.js:120 sockjs-client:browser:xhr status +1ms 200

browser.js:120 sockjs-client:browser:xhr finish +0ms 200 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

o

h

h

h

h

h

browser.js:120 sockjs-client:receiver:xhr finish +0ms 200 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

browser.js:120 sockjs-client:receiver:xhr _chunkHandler +0ms 200

browser.js:120 sockjs-client:receiver:xhr close +0ms network

browser.js:120 sockjs-client:polling close +1ms null network undefined

browser.js:120 sockjs-client:polling _scheduleReceiver +0ms

browser.js:120 sockjs-client:receiver:xhr http://localhost/eess- services/stomp/266/ypsjtids/xhr_streaming +0ms

browser.js:120 sockjs-client:browser:xhr POST +1ms http://localhost/eess-services/stomp/266/ypsjtids/xhr_streaming

我在生产中遇到了这个问题:( Regards。

编辑:

我发现这里是可能出现的错误。在polling.js中,当关闭原因是'网络'时,我看到了一种特殊的处理方式。网络何时再次调用函数_scheduleReceiver()。当我们重新连接发生无限循环时。我不知道这种治疗的原因是什么,但我可以尝试删除'网络'的特殊处理,一切正常。 @skozin你可以试试吗? (!self.pollIsClosing){if(reason ==='network'){self._scheduleReceiver();}} } else {self.emit('close',code || 1006,reason); self.removeAllListeners(); }}

的解决方法是:

如果(!self.pollIsClosing){self.emit( '关闭',代码1006 ||,原因); self.removeAllListeners(); }

+0

经过几天的测试,我发现在iOS中(Iphone 6与最新版本的iOS)无法连接。我已经解决了桌面上的无限循环,但现在我无法连接到移动设备 –

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值