我使用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:帧有效负载太大)
那么我怎样才能增加帧的有效载荷大小。
答案 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);