gpt4 book ai didi

websocket - Jetty 9 WebSocket 服务器 session 上的最大消息大小

转载 作者:行者123 更新时间:2023-12-02 23:20:52 24 4
gpt4 key购买 nike

我遇到了这个问题,并且在任何地方都很难找到这个问题的答案,所以我想我会在这里为 future 的程序员输入它。

在 Jetty 9 中,如果您尝试在 session 对象上设置最大消息大小来处理大数据包,它将不起作用。如果您的客户端尝试发送大数据,您仍然会断开连接。我正在谈论这个对象上的 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)

关于websocket - Jetty 9 WebSocket 服务器 session 上的最大消息大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17497173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com