我遇到了这个问题,并且在任何地方都很难找到答案,所以我想我会在这里输入供将来的程序员使用。
在Jetty 9中,如果您尝试在会话对象上设置最大消息大小以处理较大的数据包,则它将不起作用。如果您的客户端尝试发送大数据,您仍然会断开连接。我正在谈论此对象上的setMaximimumMessageSize:http : //download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/websocket/api/Session.html
相反,您要做的是在从WebSocketServletFactory获取的策略对象上设置最大消息大小。
public final class MyWebSocketServlet extends WebSocketServlet
{
private static final long MAX_MESSAGE_SIZE = 1000000;
@Override
public void configure(WebSocketServletFactory factory)
{
factory.getPolicy().setMaxMessageSize(MAX_MESSAGE_SIZE);
factory.setCreator(new MyWebSocketCreator());
}
}
这将按预期工作,并且您的服务器将能够处理不超过您设置的最大大小的大型邮件。
WebSocketServlet
正确设置最大消息的方式。
您在javadoc中指出的Session.setMaximumMessageSize(long)不幸地泄漏了JSR-356(javax.websocket API)工作的早期草案。
Jetty端API上的该方法不应该存在,并且已在Jetty 9.1中删除。
错误已提交:https : //bugs.eclipse.org/bugs/show_bug.cgi?id=412439
注意:Jetty 9.1将支持JSR-356(javax.websocket API)。其中javax.websocket.Session具有2种行为类似的方法。
javax.websocket.Session.setMaxBinaryMessageBufferSize(int)
javax.websocket.Session.setMaxTextMessageBufferSize(int)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句