我有一个处理聊天+投票网站的Node JS + Socket.io设置。从第一天开始我就注意到,一个客户端不时有多个连接。
客户端的浏览器(用户代理)和网络(ip)每次都不同,并且一次有大约2-3k个连接。这种行为很难诊断/复制,因为它每隔几天就会发生一次。
从我观察到的情况来看,它就像客户端的浏览器连接并立即断开连接(超时),因此它会尝试重新连接。 Socket.io不知道该用户“超时”,因此io.engine.clientsCount
显示增加的连接数几分钟。这不会是一个问题,对性能影响不大,但它会显示统计数据中的错误数据,这对我来说是不可接受的。
如下面的屏幕截图所示,此行为会在连接计数器中导致“尖峰”:
我找不到有关此行为的任何信息,但我的想法很少:
有趣的是,在使用相对最新的浏览器的客户端观察到这种行为,所以它不像有人试图用IE4运气:)
这对我来说真是令人头疼。如果有人观察到这样的事情,我会非常感谢帮助
修改2016-02-07
我抓住了2个用户解决了这个问题并得到了一些关于它们的信息:
HTTP headers:
host: ***.***.**.**:3000
connection: keep-alive
referer: http://***************.pl/
origin: http://***************.pl
x-wap-profile: http://wap.samsungmobile.com/uaprof/GT-P7510.xml
accept: text/xml, text/html, application/xhtml+xml, image/png, text/plain, */*;q=0.8
accept-charset: utf-8, iso-8859-1, utf-16, *;q=0.7
user-agent: Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; GT-P7510 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
accept-encoding: gzip,deflate
accept-language: pl-PL, en-US
cookie: io=ejdnQT_TOXNpRc-GAJU8
Socket info:
time: Sun Feb 07 2016 17:13:05 GMT+0100 (CET)
address: ***.**.**.**
xdomain: true
secure: false
issued: 1454861585297
url: /socket.io/?EIO=3&transport=polling&t=1454865217050-32520
-----
HTTP headers:
host: ***.***.**.**:3002
connection: keep-alive
referer: http://***************.pl/
origin: http://***************.pl
accept: text/xml, text/html, application/xhtml+xml, image/png, text/plain, */*;q=0.8
accept-charset: utf-8, iso-8859-1, utf-16, *;q=0.7
user-agent: Mozilla/5.0 (Linux; U; Android 3.2; pl-pl; GT-P7300 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
accept-encoding: gzip,deflate
accept-language: pl-PL, en-US
cookie: io=lLFL2chztf7gZzh3AFtG
Socket info:
time: Sun Feb 07 2016 17:40:55 GMT+0100 (CET)
address: **.***.*.**
xdomain: true
secure: false
issued: 1454863255162
url: /socket.io/?EIO=3&transport=polling&t=1454863408365-11598
他们似乎都在使用Android 3.2的三星平板电脑。我已经使用此版本在Android AVD模拟器上进行了测试,但没有结果。