V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
boydfd
V2EX  ›  程序员

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

  •  
  •   boydfd · 2016 年 4 月 6 日 · 6591 次点击
    这是一个创建于 3567 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    @peter999 用 go 写的,用的是 gorilla/websocket ,除了这个貌似就官方的包好用了
    itfanr
        4
    itfanr  
       2016 年 4 月 6 日
    少了个 e 看着不爽 哈哈
    peter999
        5
    peter999  
       2016 年 4 月 6 日
    抓下异常信息
    boydfd
        6
    boydfd  
    OP
       2016 年 4 月 6 日
    @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  
       2016 年 4 月 9 日 via iPhone
    这个我之前写 PHP 的时候遇到过,当时是用分段传输的方式解决的
    boydfd
        9
    boydfd  
    OP
       2016 年 4 月 9 日   ❤️ 1
    @peter999
    @lucky215

    已经知道问题所在了,我使用的 gorilla 的库,一开始可以设置缓冲区大小,缓冲区满了后再向里面写数据就会断开连接。这么设计的原因应该是为了防止某些用户恶意的请求,导致服务器花费大量的缓冲区来保存要向这个恶意用户的数据。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:35 · PVG 10:35 · LAX 18:35 · JFK 21:35
    ♥ Do have faith in what you're doing.