来自一个客户端

时间:2015-12-19 16:36:07

标签: node.js socket.io

我有一个处理聊天+投票网站的Node JS + Socket.io设置。从第一天开始我就注意到,一个客户端不时有多个连接。

客户端的浏览器(用户代理)和网络(ip)每次都不同,并且一次有大约2-3k个连接。这种行为很难诊断/复制,因为它每隔几天就会发生一次。

从我观察到的情况来看,它就像客户端的浏览器连接并立即断开连接(超时),因此它会尝试重新连接。 Socket.io不知道该用户“超时”,因此io.engine.clientsCount显示增加的连接数几分钟。这不会是一个问题,对性能影响不大,但它会显示统计数据中的错误数据,这对我来说是不可接受的。

如下面的屏幕截图所示,此行为会在连接计数器中导致“尖峰”:

Graph

我找不到有关此行为的任何信息,但我的想法很少:

  1. 客户端位于防火墙后面 - Node.JS侦听3000以上的端口,因此某些公共网络不允许连接。这就是它,但是根本没有联系
  2. 客户端使用某种代理 - 但我会获得代理IP地址,而不是客户端
  3. 可能的DOS攻击 - 没有。为了简单,不会造成任何损害。
  4. 已安装的插件/已禁用功能 - 这可能是可行的,但我不知道会导致此类行为的原因。
  5. 有趣的是,在使用相对最新的浏览器的客户端观察到这种行为,所以它不像有人试图用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模拟器上进行了测试,但没有结果。

0 个答案:

没有答案