如何在android autobahn websocket中增加帧有效载荷大小

时间:2016-01-16 16:29:45

标签: android python sockets autobahn autobahnws

我使用android autobahn websocket在android和python tornado socket服务器之间建立连接。

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

public void start(){

    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(对象有效负载)方法中接收。

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

WebSocketException(de.tavendo.autobahn.WebSocketException:帧有效负载太大)

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

1 个答案:

答案 0 :(得分:0)

你需要使用像这样的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);