Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在@OnBinary传的数据比较大时连接会断掉 #21

Closed
xiaodengchao opened this issue Jan 6, 2019 · 8 comments
Closed

在@OnBinary传的数据比较大时连接会断掉 #21

xiaodengchao opened this issue Jan 6, 2019 · 8 comments

Comments

@xiaodengchao
Copy link

有没有可以设置session最大大小的方法,tomcat的websocket是有这个方法的

@YeautyYE
Copy link
Owner

YeautyYE commented Jan 6, 2019

没有现成的配置可以直接设置这个值
因为考虑到部分场景,连接数与真实的资源消耗并不是绝对的正比,直接限制连接数并不能带来最好的效果,而设置backlog(与Netty中的backlog一致)将是一个更好的选择.

如果需要限制session的最大大小,可以很简单的实现
如:在@serverendpoint的类里面加入AtomicInteger类型的全局变量来进行限制.(连接成功时+1,关闭时-1.当数量超过限制时强制关闭)

@xiaodengchao
Copy link
Author

我是指如果我把文件流在@onbinary中传递时太大的文件流会直接断掉,不是指限制连接数,可能我之前的表述有问题把

@YeautyYE
Copy link
Owner

YeautyYE commented Jan 6, 2019

如果是server有限制,会报错,可以看下报错信息.
或者是否client对每次消息大小有限制

另外,具体文件大小是多少

@xiaodengchao
Copy link
Author

这是server端的报错信息:io.netty.handler.codec.CorruptedFrameException: Max frame length of 65536 has been exceeded
client端时有分片分批传输的,调小了区间是可以正常使用的,只是我想把大小设的稍微大一点,这样分块分的太多了,所以想知道是否有可以直接调整的配置项和方法可用

@YeautyYE
Copy link
Owner

YeautyYE commented Jan 6, 2019

这是server端的报错信息:io.netty.handler.codec.CorruptedFrameException: Max frame length of 65536 has been exceeded
client端时有分片分批传输的,调小了区间是可以正常使用的,只是我想把大小设的稍微大一点,这样分块分的太多了,所以想知道是否有可以直接调整的配置项和方法可用

好的,了解.
这个65536的最大帧载荷长度是为了防止客户端使用大数据量来进行拒绝服务型攻击(Denial-of-Service Attacks).
下个版本将会增加此配置项,预计0点后即可在maven中央仓库下载

@xiaodengchao
Copy link
Author

是的,谢谢,确实是可以在那个初始化的时候设置这个最大帧载荷长度,如果可以灵活配置的话就更好了

@YeautyYE
Copy link
Owner

YeautyYE commented Jan 6, 2019

0.7.3版本中增加了maxFramePayloadLength属性,进行配置即可.
预计0点后可在maven中央仓库下载
或者直接clone源码install到本地仓库

@xiaodengchao
Copy link
Author

好的,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants