繁体   English   中英

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

[英]how to limit the amount of data being sent by the client through websocket?

我正在使用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()方法。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM