Managing Web-Socket connections manually
Default SDK behaviour on login
When the login method of the SDK is called, the SDK performs the below operations:
- Logs the user into the SDK
- Saves the details of the logged in user locally.
- Creates a web-socket connection for the logged in user.
This makes sure that the logged in user starts receiving real-time messages sent to him or any groups that he is a part of as soon as he logs in.
When the app is reopened, and the init() method is called, the web-socket connection to the server is established automatically.
This is the default behaviour of the CometChat SDKs. However, if you wish to take control of the web-socket connection i.e if you wish to connect and disconnect to the web-socket server manually, you can refer to the Managing Web-socket Connection section.
Managing the Web-socket connections manually
The CometChat SDK also allows you to modify the above default behaviour of the SDK and take the control of the web-socket connection into your own hands. In order to achieve this, you need to follow the below steps:
- While calling the init() function on the app startup, you need to inform the SDK that you will be managing the web socket connect. You can do so by using the
autoEstablishSocketConnection()
method provided by theAppSettingsBuilder
class. This method takes a boolean value as an input. If set totrue
, the SDK will manage the web-socket connection internally based on the default behaviour mentioned above. If set tofalse
, the web socket connection can will not be managed by the SDK and you will have to handle it manually. You can refer to the below code snippet for the same:
- Swift
- Objective C
let appSettings = AppSettings.AppSettingsBuilder()
.setRegion(region: "us")
.autoEstablishSocketConnection(false)
.build()
let _ = CometChat.init(appId:"1976246d33493296",
appSettings: appSettings,
onSuccess: { (Success) in
print( "Initialization onSuccess \(Success)")
}) { (error) in
print( "Initialization Error Code: \(error.errorCode)")
print( "Initialization Error Description: \(error.errorDescription)")
}
AppSettingsBuilder *appSettingBuilder = [[AppSettingsBuilder alloc]init];
AppSettings *appSettings = [[[appSettingBuilder autoEstablishSocketConnection:false]
setRegionWithRegion: REGION_CODE]build];
[[CometChat alloc]initWithAppId:APP_ID appSettings:appSettings onSuccess:^(BOOL isSuccess) {
NSLog(isSuccess ? @"CometChat Initialize Success:-YES" : @"CometChat Initialize Success:-NO");
} onError:^(CometChatException * error) {
NSLog(@"Error %@",[error errorDescription]);
}];
- You can manage the connection to the web-socket server using the
connect()
anddisconnect()
methods provided by the SDK. - Connect to the web-socket server
You need to use the connect()
method provided by the CometChat
class to establish the connection to the web-socket server. Please make sure that the user is logged in to the SDK before calling this method. You can use the CometChat.getLoggedInUser() method to check this. Once the connection is established, you will start receiving all the real-time events for the logged in user
- Swift
- Objective C
CometChat.connect()
CometChat.connect();
- Disconnect from the web-socket server
You can use the disconnect()
method provided by the CometChat
class to break the established connection. Once the connection is broken, you will stop receiving all the real-time events for the logged in user.
- Swift
- Objective C
CometChat.disconnect()
CometChat.disconnect();