Chromium Code Reviews| Index: runtime/bin/vmservice/server.dart |
| diff --git a/runtime/bin/vmservice/server.dart b/runtime/bin/vmservice/server.dart |
| index 4075e8d427886d363b4b9c31aabeba5ad5c1c7be..c872764556693d297e23924854a7f1029fc95d1d 100644 |
| --- a/runtime/bin/vmservice/server.dart |
| +++ b/runtime/bin/vmservice/server.dart |
| @@ -51,7 +51,19 @@ class WebSocketClient extends Client { |
| return; |
| } |
| try { |
| - socket.add(result); |
| + if (result is String) { |
| + socket.add(result); // String message. |
| + } else if (result is Uint8List) { |
| + socket.add(result); // Binary message. |
|
siva
2016/08/18 16:33:17
why is this not :
if ((result is String) || (resu
rmacnak
2016/08/18 17:30:59
Done.
|
| + } else { |
| + // String message as external Uint8List. |
| + assert(result is List); |
| + Uint8List cstring = result[0]; |
| + // TODO(rmacnak): cstring may be large. Add a way to pass an encoded |
| + // string to a web socket that will be sent as a text message to avoid |
| + // the space overhead of converting cstring to a Dart string. |
| + socket.add(UTF8.decode(cstring)); |
| + } |
| } catch (_) { |
| print("Ignoring error posting over WebSocket."); |
| } |
| @@ -79,14 +91,21 @@ class HttpRequestClient extends Client { |
| close(); |
| } |
| - void post(String result) { |
| + void post(dynamic result) { |
| if (result == null) { |
| close(); |
| return; |
| } |
| - request.response..headers.contentType = jsonContentType |
| - ..write(result) |
| - ..close(); |
| + HttpResponse response = request.response; |
| + response.headers.contentType = jsonContentType; |
| + if (result is String) { |
| + response.write(result); |
| + } else { |
| + assert(result is List); |
| + Uint8List cstring = result[0]; // Already in UTF-8. |
| + response.add(cstring); |
| + } |
| + response.close(); |
| close(); |
| } |