2016-01-16 5 views
1

Я использую андроид autobahn websocket для установления соединения между сервером и сервером торнадо python.Как увеличить размер полезной нагрузки кадра в андроиде autobahn websocket

Ниже приведен код web-камеры autobahn, который используется в android.

общественного недействительными старт() {

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; 
    } 
} 

Все сообщения получают в методе общественной пустот onTextMessage (полезной нагрузки объекта).

Проблема в том, что при отправке изображений менее 128 кб с сервера сокетов python я могу его получить. Но когда я отправляю изображения размером более 128 кб, он показывает ошибку, о которой говорится ниже.

WebSocketException (de.tavendo.autobahn.WebSocketException: рама полезная нагрузка слишком велика)

Так как я могу увеличить размер полезной нагрузки кадра.

+0

Является ли это о том образе, что это больше, то 128 КБ или струнном полезную нагрузку более 128 Кб? – greenapps

+0

Почему вы кодируете base64? Вам нужно будет отправить на 30% больше байтов. – greenapps

+0

Мне кажется странным, что сервер может обрабатывать более 128 КБ одновременно, а клиент - нет. – greenapps

ответ

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);