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

Cor*_*ped 18 javascript limit websocket node.js express

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

bodyParser.json({limit:'1Mb'})
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ghe*_*unk 12

该库中没有(当前)该功能.

看看它们的源代码,似乎启动的地方是https://github.com/websockets/ws/blob/master/lib/Receiver.js中的processPacket()方法.

一旦有了可用的数据包标头,就可以看到正在发送的消息的大小.如果它高于某个阈值,应该有一种方法可以在所有字节甚至命中你的网络之前关闭连接.

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

如果他们喜欢,他们会合并.如果没有,您仍然可以将他们未来的版本合并到您自己的回购中,并保持最新状态,而无需在每次提交新版本时重新开始工作.