我正在使用ws
模块,我想将客户端通过websocket发送的数据量限制在1Mb。这将防止恶意用户发送大量数据(以GB为单位),导致服务器内存不足,这将导致每个普通用户出现拒绝服务错误。
例如,example Express允许指定post请求主体的最大大小,如下所示:
bodyParser.json({limit:'1Mb'})
我如何使用ws
模块做类似的事情?
我试过了
var ws = require('ws').Server
var wsserver = new ws({port:8080, limit:'1Mb'})
但这当然行不通。
我希望数据传输中断(超过1Mb后),并关闭websocket连接。我该怎么做呢?
必须有一种方法来限制来自客户端的数据帧...
发布于 2015-06-17 06:18:41
该能力(目前)不存在于该库中。
浏览一下他们的源代码,似乎应该从https://github.com/websockets/ws/blob/master/lib/Receiver.js中的processPacket()
方法开始。
一旦您有了可用的数据包报头,您就可以看到正在发送的消息的大小。如果它高于某个阈值,那么应该有一种方法在所有字节都命中您的网络之前关闭连接。
当然,最好的做法是派生他们的存储库,发出一个功能请求,添加一个默认的配置选项,如果没有设置就不执行任何操作(不要破坏向后兼容性),然后提交一个拉取请求。
如果他们喜欢,他们就会合并。如果没有,你仍然可以将它们的未来版本合并到你自己的repo中,并保持最新,而不必在每次他们提交新版本时重新做你的工作。
https://stackoverflow.com/questions/30834736
复制相似问题