Как увеличить размер полезной нагрузки кадра в Android AutoBahn Websocket
Я использую android autobahn websocket для установления соединения между android и сервером сокетов торнадо python.
Ниже приведен код автобана, который я использую в Android.
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;
}
}
Все сообщения получают в открытом доступе void метод onTextMessage(Object payload).
Проблема заключается в том, что при отправке изображений размером менее 128 КБ с сервера сокетов Python я могу получить его. Но при отправке изображений размером более 128 КБ появляется ошибка, о которой упоминается ниже.
WebSocketException (de.tavendo.autobahn.WebSocketException: слишком большая полезная нагрузка кадра)
Так как я могу увеличить размер полезной нагрузки кадра.
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);