Use websocket for sends.

pull/1/head
Matthew Chen 8 years ago
parent 5ff984ab16
commit b50561a5b6

@ -37,15 +37,18 @@ static const CGFloat kSocketReconnectDelaySeconds = 5.f;
static const CGFloat kBackgroundOpenSocketDurationSeconds = 25.f;
// b) It has received a message over the socket in the last 15 seconds.
static const CGFloat kBackgroundKeepSocketAliveDurationSeconds = 15.f;
// c) It is in the process of making a request.
static const CGFloat kMakeRequestKeepSocketAliveDurationSeconds = 30.f;
NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_SocketManagerStateDidChange";
@interface TSSocketMessage : NSObject
@property (nonatomic) UInt64 requestId;
@property (nonatomic) TSSocketMessageSuccess success;
@property (nonatomic) TSSocketMessageFailure failure;
@property (nonatomic, nullable) TSSocketMessageSuccess success;
@property (nonatomic, nullable) TSSocketMessageFailure failure;
@property (nonatomic) BOOL hasCompleted;
@property (nonatomic) OWSBackgroundTask *backgroundTask;
@end
@ -115,9 +118,9 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
//
// The first tier is the actual websocket and the timers used
// to keep it alive and connected.
@property (nonatomic) SRWebSocket *websocket;
@property (nonatomic) NSTimer *heartbeatTimer;
@property (nonatomic) NSTimer *reconnectTimer;
@property (nonatomic, nullable) SRWebSocket *websocket;
@property (nonatomic, nullable) NSTimer *heartbeatTimer;
@property (nonatomic, nullable) NSTimer *reconnectTimer;
#pragma mark -
@ -143,13 +146,13 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
// trying to keep the socket open), all three should be clear.
//
// This represents how long we're trying to keep the socket open.
@property (nonatomic) NSDate *backgroundKeepAliveUntilDate;
@property (nonatomic, nullable) NSDate *backgroundKeepAliveUntilDate;
// This timer is used to check periodically whether we should
// close the socket.
@property (nonatomic) NSTimer *backgroundKeepAliveTimer;
@property (nonatomic, nullable) NSTimer *backgroundKeepAliveTimer;
// This is used to manage the iOS "background task" used to
// keep the app alive in the background.
@property (nonatomic) OWSBackgroundTask *backgroundTask;
@property (nonatomic, nullable) OWSBackgroundTask *backgroundTask;
// We cache this value instead of consulting [UIApplication sharedApplication].applicationState,
// because UIKit only provides a "will resign active" notification, not a "did resign active"
@ -421,6 +424,8 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
TSSocketMessage *socketMessage = [TSSocketMessage new];
socketMessage.success = success;
socketMessage.failure = failure;
socketMessage.backgroundTask = [OWSBackgroundTask backgroundTaskWithLabelStr:__PRETTY_FUNCTION__];
@synchronized(self)
{
// TODO: Should we use another random number generator?
@ -520,6 +525,10 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
return;
}
DispatchMainThreadSafe(^{
[self requestSocketAliveForAtLeastSeconds:kMakeRequestKeepSocketAliveDurationSeconds];
});
UInt64 requestId = message.id;
UInt32 responseStatus = 0;
if (message.hasStatus) {

Loading…
Cancel
Save