gpt4 book ai didi

java - 发送大字符串(长度 20000)时未调用 Websocket ClientEndpoint OnMessage 方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:30 27 4
gpt4 key购买 nike

1) 在 JavaSE-1.8 中使用 javax.websocket.ClientEndpoint 和 javax.websocket.OnMessage

2) 服务器(使用注释构建)发送长度为 20000 的字符串:

@ServerEndpoint("/websocket")
public class MyEndpoint {

@OnMessage
public String onMessage(String message, Session session) {
session.getBasicRemote().sendText( "eg String with length 20000 .... ... ..." );
}
}

3)客户端发送请求并应从服务器接收字符串(示例仅接收):

@ClientEndpoint
public class Receiver {

@OnMessage
public void processMessage(String message, Session session) {
System.out.println("Message received: " + message );
}
}

但是:客户端未收到任何消息。较短的字符串例如长度为 500 即可。服务器上不会引发异常(如果使用 try-catch)。所以 - 发送的长度为 20000 的字符串消失,没有任何错误!

向服务器发送请求的浏览器接收来自服务器的字符串并且一切正常,因此问题必须出在客户端。

实现 org.java_websocket.client.WebSocketClient 也从服务器接收字符串。

我还尝试设置 MaxTextMessageBufferSize

session.setMaxTextMessageBufferSize(25000);

问题在哪里?

我必须在哪里报告此错误才能获得更大字符串的工作客户端?

javax.websocket 的实现及其 session ID 非常好,我不想仅仅因为 javax.websocket.ClientEndpoint 中的这个错误就包装 org.java_websocket.client.WebSocketClient ?

谢谢。

最佳答案

听起来像是服务器配置问题或错误。

(很难缩小提供帮助的范围,因为您没有告诉我们您正在使用哪种服务器)

大多数现代 javax.websocket 服务器可以轻松处理多兆字节的消息大小。

这些效果很好:

  • Jetty 9.2.x+
  • Tomcat 8.x+
  • Wildfly/JBoss 8.x+

所有这些都具有出色的 Websocket 支持和配置选项。

关于java - 发送大字符串(长度 20000)时未调用 Websocket ClientEndpoint OnMessage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309286/

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