Summary: A few changes that should make our connect/disconnect more robust: * Certificate provider handler should be set directly to and managed by the policy. * Instantiate the socket once, synchronously on the connect method. Explicit deallocation once, synchronously on the disconnect method. * Clear handlers on disconnect after clearing the delegate. * Wait for the operation queue to drain before returning. Reviewed By: passy Differential Revision: D42664724 fbshipit-source-id: bd482acbb64a9bc9e36fb3418d4c81afa2109305
55 lines
1.8 KiB
Objective-C
55 lines
1.8 KiB
Objective-C
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#ifdef FB_SONARKIT_ENABLED
|
|
|
|
#import <Flipper/FlipperTransportTypes.h>
|
|
#import <Foundation/Foundation.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/// Defines a WebSocket transport to be used by Flipper. It just acts as a
|
|
/// wrapper on top of a WebSocket connection mainly used to abstract the actual
|
|
/// used implementation.
|
|
@interface FlipperPlatformWebSocket : NSObject
|
|
|
|
/// An event handler used to dispatch socket events to the caller.
|
|
@property(nonatomic) facebook::flipper::SocketEventHandler eventHandler;
|
|
|
|
/// A message handler used to dispatch messages received from the server.
|
|
@property(nonatomic) facebook::flipper::SocketMessageHandler messageHandler;
|
|
|
|
/// Initializes an instance of FliperWebSocketTransport with an endpoint URL.
|
|
/// @param url Endpoint URL used to establish the connection.
|
|
- (instancetype)initWithURL:(NSURL* _Nonnull)url;
|
|
|
|
/// A certificate provider used to obtain the client certificate used for
|
|
/// authentication.
|
|
- (void)setCertificateProvider:
|
|
(facebook::flipper::SocketCertificateProvider)certificateProvider;
|
|
|
|
/// Connect to the endpoint.
|
|
- (void)connect;
|
|
|
|
/// Disconnects from the endpoint.
|
|
- (void)disconnect;
|
|
|
|
/// Send a message to the endpoint.
|
|
/// @param message The message as text to be sent to the endpoint.
|
|
/// @param completionHandler A completion handler for the send operation.
|
|
/// If an error occurs, the handler will be called with an `NSError` object
|
|
/// containing information about the error. You may specify `nil` to ignore the
|
|
/// error information.
|
|
- (void)send:(NSString*)message
|
|
withCompletionHandler:(void (^_Nullable)(NSError*))completionHandler;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|
|
|
|
#endif
|