WebSockets 是数据报还是流式传输?

Posted

技术标签:

【中文标题】WebSockets 是数据报还是流式传输?【英文标题】:Are WebSockets datagram or streaming? 【发布时间】:2014-01-30 17:55:27 【问题描述】:

我正在尝试通过限制传入消息的大小来强化 java-websocket 服务器以抵御 DoS 攻击。

我找到了this great Q&A on C sockets' receive buffers(我认为这是限制大小的方法,因为我找不到其他任何东西)。其中,它说有两种类型的套接字:数据报和流。

The answer 表示数据报套接字只是切断任何多余的字节,这对我的目的来说很好,因为不完整的消息是不正确的,并且会导致发件人被列入黑名单。

我现在正在尝试确定 WebSocket 是数据报还是流式传输。因为它们使用“帧”,所以它们似乎是数据报,但我不知道。对吗?

如果它们可以流式传输,如何将 java-websocket、客户端和服务器配置为使用数据报,如果这甚至合适的话?是否可以检测到带有数据报的过大消息?

如果流式传输更合适,如何检测过大的消息?

【问题讨论】:

数据包大小、接收缓冲区大小和生成的消息 (TCP) 大小是非常不同的东西。此外,当您收到消息流时,不要将其存储在内存中,直到它爆炸,您可以随时丢弃数据。 en.wikipedia.org/wiki/WebSocket @zapl 感谢您关注 zapi!我不知道该怎么做或开始。你能发布一个代码示例吗?非常感谢您! 我没有。但是您基本上可以只读取最多 X 个字节然后停止。 ***.com/questions/15445504/… @zapl 再次感谢 zapi!您对如何将其应用于 java-websocket 代码有任何想法吗?再次非常非常感谢您! 【参考方案1】:

检查this question,似乎无法将数据报与当前的 websocket 规范一起使用。

【讨论】:

非常感谢里奥!至少我的问题已经缩小了。现在,如果我能弄清楚如何将它应用到 java-websocket...

以上是关于WebSockets 是数据报还是流式传输?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 node.js 和 socket.io 通过 WebSockets 流式传输 MP3 数据?

Websockets - 保证完整的消息?

带有流媒体档案的 Websockets

随着时间的推移,使用 java websockets 实时流式传输模拟视频变得无响应

如何从 aws kinesis 流式传输实时数据以响应基于前端

如何在目标站点上抓取通过 websocket 流式传输的 JSON 数据