关于与 WebSocket 断开连接相关的问题,我在我的 Android 客户端中遇到了同样的问题,即接收到下一条消息“二进制消息大小超过最大大小”。
在所有 Jetty 文档和其余网页中寻找一些解决方案后,我得到的唯一可行选项是包含下一个代码“maxBinaryMessageSize = size * 1024”(从客户端的角度来看,大小是您需要的最大限制)在 WebSocket 类定义中,您可以在下一行中看到:
import org.eclipse.jetty.websocket.api.BatchMode;
import org.eclipse.jetty.websocket.api.RemoteEndpoint;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
@WebSocket(maxBinaryMessageSize = 1024 * 1024)
public class MyClientWebSocket
{
@OnWebSocketClose
public void onClose(int statusCode, String reason)
{
closeLatch.countDown();
}
@OnWebSocketError
public void onError(Throwable reason)
{
//TODO ACORDARSE DE QUITAR ESTO
Log.w(TAG, "+++ ERROR : " + reason);
}
@OnWebSocketConnect
public void onConnect(Session session)
{
// your code
}
@OnWebSocketMessage
public void onMessageBinary(byte[] message, int offset, int length)
{
// message can be processed with a maximum of 1024 * 1024 bytes and not anymore limited to 64 * 1024
}
}
如果有一些 WebSocket 专家可以从客户端(在 Java/Android 中)确认这是否是正确的解决方案,那就太好了。谢谢。