1)在JavaSE-1.8中使用javax.websocket.ClientEndpoint和javax.websocket.OnMessage
2)服务器(使用Annotations构建)发送长度为20000的字符串:
@ServerEndpoint("/websocket")
public class MyEndpoint {
@OnMessage
public String onMessage(String message, Session session) {
session.getBasicRemote().sendText( "eg String with length 20000 .... ... ..." );
}
}
3)客户端发送请求并应从服务器接收String(示例刚收到):
@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从服务器接收String。
我还尝试用
设置MaxTextMessageBufferSizesession.setMaxTextMessageBufferSize(25000);
错误在哪里?
我必须在哪里报告此错误才能获得更大字符串的工作客户端?
javax.websocket的实现与session-ID相当不错,我不想因为javax.websocket.ClientEndpoint中的这个bug而包装org.java_websocket.client.WebSocketClient?
感谢。
答案 0 :(得分:0)
听起来像服务器配置问题或错误。
(很难缩小如何提供帮助,因为您没有告诉我们您使用的是哪种服务器)
大多数现代javax.websocket
服务器都可以轻松处理多兆字节的邮件大小。
这些工作很棒:
所有这些都具有出色的websocket支持和配置选项。