gpt4 book ai didi

javascript - 如何限制客户端通过 websocket 发送的数据量?

转载 作者:IT老高 更新时间:2023-10-28 22:12:35 25 4
gpt4 key购买 nike

我正在使用 ws 模块,我想将客户端通过 websocket 发送的数据量限制为 1Mb。这将防止恶意用户发送大量数据(以 GB 为单位)导致服务器内存不足,这将导致每个普通用户出现拒绝服务错误。
例如,示例 Express 允许指定发布请求正文的最大大小,如下所示:

bodyParser.json({limit:'1Mb'})

我如何使用 ws 模块做类似的事情?
我试过了

var ws = require('ws').Server
var wsserver = new ws({port:8080, limit:'1Mb'})

但这当然行不通。
我希望数据的传输被中断(超过1Mb后)并关闭websocket连接。我怎样才能做到这一点?
必须有一种方法来限制来自客户端的数据帧......

最佳答案

该库中(当前)不存在该能力。

查看他们的源代码,似乎可以从 https://github.com/websockets/ws/blob/master/lib/Receiver.js 中的 processPacket() 方法开始。 .

获得可用的数据包 header 后,您就可以看到正在发送的消息的大小。如果它高于某个阈值,则应该有一种方法可以在所有字节都到达您的网络之前关闭连接。

当然,最好的做法是 fork 他们的存储库,发出功能请求,添加一个配置选项,如果未设置默认不采取任何操作(不要破坏向后兼容性),然后提交拉取请求。

如果他们喜欢,他们就会合并。如果没有,您仍然可以将他们 future 的版本合并到您自己的存储库中并保持最新状态,而无需在每次他们提交新版本时重新做您的工作。

关于javascript - 如何限制客户端通过 websocket 发送的数据量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com