【问题标题】:how to increase frame payload size in android autobahn websocket如何在 android autobahn websocket 中增加帧有效负载大小
【发布时间】:2016-01-16 16:29:45
【问题描述】:

我正在使用 android autobahn websocket 在 android 和 python tornado socket server 之间建立连接。

下面是android中使用的高速公路websocket代码。

公共无效开始(){

    final String wsuri = ip;

    try {
        mConnection.connect(wsuri, new WebSocketHandler() {

            @Override
            public void onOpen() {
                Log.d(TAG, "Connected to " + wsuri);

            }

            @Override
            public void onTextMessage(String payload) {
                Log.d(TAG, "Got echo: " + payload);

            try{

                InputStream stream = new ByteArrayInputStream(Base64.decode((payload).getBytes(), Base64.DEFAULT));
                Bitmap bitmap = BitmapFactory.decodeStream(stream);

                image.setImageBitmap(bitmap);

            } catch (Exception e) {
                Log.d("got exception:", e.toString());

            }



            }

            @Override
            public void onClose(int code, String reason) {
                Log.d(TAG, "Connection lost.");
                Toast.makeText(Project12.this, "Server is Closed", Toast.LENGTH_SHORT).show();
            }
        });

    } catch (WebSocketException e) {

        Log.d(TAG, e.toString());
        Toast.makeText(Project12.this, "Given IP Adress is not available", Toast.LENGTH_SHORT).show();
        return;
    }
}

所有消息都在 public void onTextMessage(Object payload) 方法中接收。

问题是当我从 python 套接字服务器发送小于 128 kb 的图像时,我能够接收它。但是当我发送大小超过 128 kb 的图像时,它会显示下面提到的错误。

WebSocketException(de.tavendo.autobahn.WebSocketException:帧负载过大)

那么我怎样才能增加帧有效载荷大小。

【问题讨论】:

  • 这是关于大于 128 KB 的图像还是大于 128 KB 的字符串负载?
  • 你为什么是base64编码?您将不得不多发送 30% 的字节。
  • 服务器一次可以处理超过 128 KB 而客户端不能处理,这对我来说很奇怪。

标签: android python sockets autobahn autobahnws


【解决方案1】:

你需要像这样使用 WebSocketOptions:

  WebSocketOptions options = new WebSocketOptions();
  options.setMaxMessagePayloadSize(1000000); //max size of message
  options.setMaxFramePayloadSize(1000000); //max size of frame
  mConnection.connect(wsuri, new WebSocketHandler() {},options);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2014-10-15
    • 2020-06-12
    • 2017-08-23
    相关资源
    最近更新 更多