首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何限制客户端通过websocket发送的数据量?

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

Stack Overflow用户
提问于 2015-06-15 05:27:54
回答 1查看 1.8K关注 0票数 18

我正在使用ws模块,我想将客户端通过websocket发送的数据量限制在1Mb。这将防止恶意用户发送大量数据(以GB为单位),导致服务器内存不足,这将导致每个普通用户出现拒绝服务错误。

例如,example Express允许指定post请求主体的最大大小,如下所示:

代码语言:javascript
复制
bodyParser.json({limit:'1Mb'})

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

我试过了

代码语言:javascript
复制
var ws = require('ws').Server
var wsserver = new ws({port:8080, limit:'1Mb'})

但这当然行不通。

我希望数据传输中断(超过1Mb后),并关闭websocket连接。我该怎么做呢?

必须有一种方法来限制来自客户端的数据帧...

EN

回答 1

Stack Overflow用户

发布于 2015-06-17 06:18:41

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

浏览一下他们的源代码,似乎应该从https://github.com/websockets/ws/blob/master/lib/Receiver.js中的processPacket()方法开始。

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

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

如果他们喜欢,他们就会合并。如果没有,你仍然可以将它们的未来版本合并到你自己的repo中,并保持最新,而不必在每次他们提交新版本时重新做你的工作。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30834736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档