Skip to content

Commit

Permalink
Add support for receiving binary type data (ArrayBuffer)
Browse files Browse the repository at this point in the history
Summary:This brings the same functionality that's already present on iOS, introduced in facebook#4483, to Android: convert binary payloads to base64 strings and send them to JS land that way, where they'll be turned into an ArrayBuffer.

**Test Plan:** Used test server from facebook#6889 (in `--binary` mode) to send some binary data to the Android UIExplorer example (also from facebook#6889). Verified it's received correctly as `ArrayBuffer`.
Closes facebook#6868

Differential Revision: D3184797

Pulled By: mkonicek

fb-gh-sync-id: e78c640c43b3e41a75ddba79acc04e5eaab5667d
fbshipit-source-id: e78c640c43b3e41a75ddba79acc04e5eaab5667d
  • Loading branch information
philikon authored and zebulgar committed Jun 18, 2016
1 parent b5adcc5 commit 20c3d6c
Showing 1 changed file with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

package com.facebook.react.modules.websocket;

import android.util.Base64;

import java.io.IOException;
import java.lang.IllegalStateException;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -145,7 +147,11 @@ public void onPong(Buffer buffer) {
public void onMessage(BufferedSource bufferedSource, WebSocket.PayloadType payloadType) {
String message;
try {
message = bufferedSource.readUtf8();
if (payloadType == WebSocket.PayloadType.BINARY) {
message = Base64.encodeToString(bufferedSource.readByteArray(), Base64.NO_WRAP);
} else {
message = bufferedSource.readUtf8();
}
} catch (IOException e) {
notifyWebSocketFailed(id, e.getMessage());
return;
Expand All @@ -162,6 +168,7 @@ public void onMessage(BufferedSource bufferedSource, WebSocket.PayloadType paylo
WritableMap params = Arguments.createMap();
params.putInt("id", id);
params.putString("data", message);
params.putString("type", payloadType == WebSocket.PayloadType.BINARY ? "binary" : "text");
sendEvent("websocketMessage", params);
}
});
Expand Down

0 comments on commit 20c3d6c

Please sign in to comment.