有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何设置高速公路Websocket的最大消息长度?

我在安卓(Java)上使用“Autobahn”作为客户端,在linux上使用“Autobahn”作为服务器(python)。当我从客户那里发送大消息时,我们会断开连接。这是因为超过了最大消息长度。对于不同的设备,这个限制也不同。“Minix Neo X8”为2Mb,“HTC One”为8Mb。有什么问题吗?如何通过强制设置消息的最大长度

import de.tavendo.autobahn.WebSocketConnection;
import de.tavendo.autobahn.WebSocketException;
import de.tavendo.autobahn.WebSocketHandler;
import de.tavendo.autobahn.WebSocketOptions;


WebSocketManager mWebSocketManager = new WebSocketManager();
    MessageHandler messageHandler = new MessageHandler();

    private final WebSocketConnection mConnection = new WebSocketConnection();

        private void createSocket() {
            try {
                mConnection.connect("ws://192.168.45.86:1488/echo", mWebSocketManager);
            } catch (WebSocketException e) {

                Log.d(TAG, e.toString());
            }
        }

    private class WebSocketManager extends WebSocketHandler {
            @Override
            public void onTextMessage(String data) {
                try {
                    messageHandler.parseMessage(data);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onOpen() {
                Log.d("RECD", "Connection established");
                messageHandler.sendMessage("Request", "Login", 16, null);
            }

            @Override
            public void onClose(int code, String reason) {
            }
        }

我尝试使用setMaxMessagePayloadSize设置消息的最大长度(以八位字节为单位):

private void createSocket() {
        try {
            WebSocketOptions options = new WebSocketOptions();
            options.setMaxMessagePayloadSize(33554432);
            mConnection.connect("ws://192.168.45.86:1488/echo", mWebSocketManager , options);

        } catch (WebSocketException e) {

            Log.d("Error", e.toString());
        }
    }

但这并不影响信息的长度。如果不使用setMaxMessagePayloadSize,那么当消息超过65536字节时,我会得到一个异常:

W/System.err﹕ de.tavendo.autobahn.WebSocketException: message payload exceeds payload limit

该文档声明消息的默认长度为4MB

http://autobahn.ws/安卓/_gen/de/tavendo/autobah/WebSocketOptions.html#setmaxmessagepayloadsize


共 (0) 个答案