Skip to content

Commit 90bf99c

Browse files
amgleitmanAdam Gleitman
andauthored
Use SocketRocket for web socket library (facebook#36471) (#1746)
Summary: Pull Request resolved: facebook#36471 The previous native web socket API, `RCTSRWebSocket`, appears to be an older version of the one provided as part of [SocketRocket](https://github.com/facebookincubator/SocketRocket). The latter has several improvements, such as the ability to respect proxy settings, which has been requested by a user of a React Native app. Everything translates over pretty easily, and considering that SocketRocket is already a dependency of Flipper, there doesn't seem to be much additional cost to swapping out the libraries. If we wanted to make things even slimmer, it may even be possible to make the WebSocket library be optional for release builds. [IOS] [CHANGED] - Use SocketRocket for web socket library Pull Request resolved: facebook#36347 Test Plan: Validated the following: * The WebSocket test page in RNTester * Live reloading Reviewed By: cortinico Differential Revision: D43768835 Pulled By: javache fbshipit-source-id: 11e1ac2700bc92991897c594622e6687339bfcbf Co-authored-by: Adam Gleitman <adgleitm@microsoft.com>
1 parent 2c2e2fb commit 90bf99c

File tree

12 files changed

+96
-1890
lines changed

12 files changed

+96
-1890
lines changed

BUCK

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ REACT_PUBLIC_HEADERS = {
305305
"React/RCTRootShadowView.h": RCTVIEWS_PATH + "RCTRootShadowView.h",
306306
"React/RCTRootView.h": RCTBASE_PATH + "RCTRootView.h",
307307
"React/RCTRootViewDelegate.h": RCTBASE_PATH + "RCTRootViewDelegate.h",
308-
"React/RCTSRWebSocket.h": RCTLIB_PATH + "WebSocket/RCTSRWebSocket.h",
309308
"React/RCTScrollEvent.h": RCTVIEWS_PATH + "ScrollView/RCTScrollEvent.h",
310309
"React/RCTScrollView.h": RCTVIEWS_PATH + "ScrollView/RCTScrollView.h",
311310
"React/RCTScrollableProtocol.h": RCTVIEWS_PATH + "ScrollView/RCTScrollableProtocol.h",
@@ -445,6 +444,7 @@ rn_xplat_cxx_library2(
445444
],
446445
deps = [
447446
YOGA_CXX_TARGET,
447+
"//fbobjc/VendorLib/SocketRocket:SocketRocket",
448448
react_native_xplat_target("cxxreact:bridge"),
449449
react_native_xplat_target("reactperflogger:reactperflogger"),
450450
],

Libraries/WebSocket/RCTReconnectingWebSocket.m

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@
1010
#import <React/RCTConvert.h>
1111
#import <React/RCTDefines.h>
1212

13-
#import <React/RCTSRWebSocket.h>
13+
#import <SocketRocket/SRWebSocket.h>
1414

1515
#if RCT_DEV // Only supported in dev mode
1616

17-
@interface RCTReconnectingWebSocket () <RCTSRWebSocketDelegate>
17+
@interface RCTReconnectingWebSocket () <SRWebSocketDelegate>
1818
@end
1919

2020
@implementation RCTReconnectingWebSocket {
2121
NSURL *_url;
22-
RCTSRWebSocket *_socket;
22+
SRWebSocket *_socket;
2323
BOOL _stopped;
2424
}
2525

@@ -39,14 +39,14 @@ - (instancetype)initWithURL:(NSURL *)url
3939

4040
- (void)send:(id)data
4141
{
42-
[_socket send:data];
42+
[_socket sendData:data error:nil];
4343
}
4444

4545
- (void)start
4646
{
4747
[self stop];
4848
_stopped = NO;
49-
_socket = [[RCTSRWebSocket alloc] initWithURL:_url];
49+
_socket = [[SRWebSocket alloc] initWithURL:_url];
5050
_socket.delegate = self;
5151
[_socket setDelegateDispatchQueue:_delegateDispatchQueue];
5252
[_socket open];
@@ -60,7 +60,7 @@ - (void)stop
6060
_socket = nil;
6161
}
6262

63-
- (void)webSocket:(RCTSRWebSocket *)webSocket didReceiveMessage:(id)message
63+
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
6464
{
6565
[_delegate reconnectingWebSocket:self didReceiveMessage:message];
6666
}
@@ -71,7 +71,7 @@ - (void)reconnect
7171
return;
7272
}
7373

74-
__weak RCTSRWebSocket *socket = _socket;
74+
__weak SRWebSocket *socket = _socket;
7575
__weak __typeof(self) weakSelf = self;
7676

7777
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
@@ -82,20 +82,20 @@ - (void)reconnect
8282
});
8383
}
8484

85-
- (void)webSocketDidOpen:(RCTSRWebSocket *)webSocket
85+
- (void)webSocketDidOpen:(SRWebSocket *)webSocket
8686
{
8787
[_delegate reconnectingWebSocketDidOpen:self];
8888
}
8989

90-
- (void)webSocket:(RCTSRWebSocket *)webSocket didFailWithError:(NSError *)error
90+
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error
9191
{
9292
[_delegate reconnectingWebSocketDidClose:self];
9393
if ([error code] != ECONNREFUSED) {
9494
[self reconnect];
9595
}
9696
}
9797

98-
- (void)webSocket:(RCTSRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean
98+
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean
9999
{
100100
[_delegate reconnectingWebSocketDidClose:self];
101101
[self reconnect];

Libraries/WebSocket/RCTSRWebSocket.h

Lines changed: 0 additions & 132 deletions
This file was deleted.

0 commit comments

Comments
 (0)