+ [ios] add array buffer support
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fd8f1770 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fd8f1770 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fd8f1770 Branch: refs/heads/0.16-dev Commit: fd8f177020b712724c52a02052b20e06d2d22661 Parents: 1aa0bf4 Author: é½å±± <sunjjb...@163.com> Authored: Wed Aug 2 16:27:11 2017 +0800 Committer: é½å±± <sunjjb...@163.com> Committed: Wed Aug 2 16:27:11 2017 +0800 ---------------------------------------------------------------------- examples/vue/modules/websocket.vue | 15 +- .../WeexSDK/Sources/Loader/WXWebSocketLoader.h | 2 +- .../WeexSDK/Sources/Loader/WXWebSocketLoader.m | 2 +- .../WeexSDK/Sources/Module/WXWebSocketModule.m | 20 +- .../Sources/WebSocket/WXWebSocketDefaultImpl.m | 2 +- pre-build/native-bundle-main.js | 26024 ++++++++++++++++- 6 files changed, 26050 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/examples/vue/modules/websocket.vue ---------------------------------------------------------------------- diff --git a/examples/vue/modules/websocket.vue b/examples/vue/modules/websocket.vue index 72d7ea1..e6ba2e1 100644 --- a/examples/vue/modules/websocket.vue +++ b/examples/vue/modules/websocket.vue @@ -88,7 +88,13 @@ self.onopeninfo = 'websocket open'; } websocket.onmessage = function(e) { - self.onmessage = e.data; + if(Object.prototype.toString.apply(e.data) === 'ArrayBuffer'){ + self.onmessage = 'you receive array buffer' + } + if(Object.prototype.toString.apply(e.data) === 'String'){ + self.onmessage = e.data; + } + } websocket.onerror = function(e) { self.onerrorinfo = e.data; @@ -101,7 +107,12 @@ send: function(e) { var input = this.$refs.input; input.blur(); - websocket.send(this.txtInput); + var buffer = new ArrayBuffer(16) + var view = new Float32Array(buffer) + view.set([4,89,36.9,0.765]) + console.log(buffer); + this.sendinfo = buffer; + websocket.send(buffer); this.sendinfo = this.txtInput; }, oninput: function(event) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h index 378a85e..95e5398 100644 --- a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h +++ b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h @@ -28,7 +28,7 @@ - (instancetype)initWithUrl:(NSString *)url protocol:(NSString *)protocol; - (void)open; -- (void)send:(NSString *)data; +- (void)send:(id)data; - (void)close; - (void)close:(NSInteger)code reason:(NSString *)reason; - (void)clear; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m index c751c0a..7821ed6 100644 --- a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m +++ b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m @@ -74,7 +74,7 @@ } } -- (void)send:(NSString *)data +- (void)send:(id)data { id<WXWebSocketHandler> requestHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXWebSocketHandler)]; if (requestHandler) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m index 018103a..046702d 100644 --- a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m +++ b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m @@ -61,6 +61,12 @@ WX_EXPORT_METHOD(@selector(onclose:)) NSMutableDictionary *dic = [NSMutableDictionary new]; if([message isKindOfClass:[NSString class]]) { [dic setObject:message forKey:@"data"]; + }else if([message isKindOfClass:[NSData class]]){ + NSMutableDictionary *dataDict = [NSMutableDictionary new]; + NSString *base64Encoded = [message base64EncodedStringWithOptions:0]; + [dataDict setObject:@"binary" forKey:@"@type"]; + [dataDict setObject:base64Encoded forKey:@"base64"]; + [dic setObject:dataDict forKey:@"data"]; } if (weakSelf.messageCallBack) { weakSelf.messageCallBack(dic,true);; @@ -103,9 +109,19 @@ WX_EXPORT_METHOD(@selector(onclose:)) [loader open]; } -- (void)send:(NSString *)data +- (void)send:(id)data { - [loader send:data]; + if([data isKindOfClass:[NSString class]]){ + [loader send:data]; + }else if([data isKindOfClass:[NSDictionary class]]){ + if([@"binary" isEqualToString:data[@"@type"]]){ + NSString *base64 = data[@"base64"]; + NSData *sendData = [[NSData alloc] initWithBase64EncodedString:base64 options:0]; + [loader send:sendData]; + } + } + + } - (void)close http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m ---------------------------------------------------------------------- diff --git a/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m b/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m index 951f385..c0b554e 100644 --- a/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m +++ b/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m @@ -56,7 +56,7 @@ [_webSockets setObject:webSocket forKey:identifier]; } -- (void)send:(NSString *)identifier data:(NSString *)data +- (void)send:(id)identifier data:(NSString *)data { SRWebSocket *webSocket = [_webSockets objectForKey:identifier]; if(webSocket) {