V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
boydfd
V2EX  ›  程序员

websockt 传输大量数据的时候为什么会异常断开

  •  
  •   boydfd · Apr 6, 2016 · 6746 views
    This topic created in 3679 days ago, the information mentioned may be changed or developed.

    服务器向客户端写大量数据的时候, websockt 连接会异常断开,这是为什么啊?

    9 replies    2016-04-09 08:39:02 +08:00
    crabRunning
        1
    crabRunning  
       Apr 6, 2016 via Android
    少了个 e
    peter999
        2
    peter999  
       Apr 6, 2016
    换个库试试
    boydfd
        3
    boydfd  
    OP
       Apr 6, 2016
    @crabRunning 发完的时候发现了,改不了= =

    @peter999 用 go 写的,用的是 gorilla/websocket ,除了这个貌似就官方的包好用了
    itfanr
        4
    itfanr  
       Apr 6, 2016
    少了个 e 看着不爽 哈哈
    peter999
        5
    peter999  
       Apr 6, 2016
    抓下异常信息
    boydfd
        6
    boydfd  
    OP
       Apr 6, 2016
    @peter999 异常说的是 read tcp 172.16.71.73:8080->172.16.71.73:62581: use of closed network connection--------readMessageError
    抓包后发现先是 websocket 连接关闭(服务器请求关闭的),然后服务器发 tcp 的 fin 包给客户端
    lucky215
        8
    lucky215  
       Apr 9, 2016 via iPhone
    这个我之前写 PHP 的时候遇到过,当时是用分段传输的方式解决的
    boydfd
        9
    boydfd  
    OP
       Apr 9, 2016   ❤️ 1
    @peter999
    @lucky215

    已经知道问题所在了,我使用的 gorilla 的库,一开始可以设置缓冲区大小,缓冲区满了后再向里面写数据就会断开连接。这么设计的原因应该是为了防止某些用户恶意的请求,导致服务器花费大量的缓冲区来保存要向这个恶意用户的数据。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1085 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 23:56 · PVG 07:56 · LAX 16:56 · JFK 19:56
    ♥ Do have faith in what you're doing.