Documentation Index Fetch the complete documentation index at: https://wukong.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Responsible for establishing, maintaining, and disconnecting IM connections.
This documentation only covers core methods. For more details, check the [WKSDK shared].connectionManager interface in the code.
Configuration
[WKSDK shared ].options.host = @"xxx.xxx.xxx.xxx" ; // IM communication IP
[WKSDK shared ].options.port = 5100 ; // IM communication TCP port
// Set IM connection authentication information
[WKSDK shared ].options.connectInfoCallback = ^ WKConnectInfo * _Nonnull{
WKConnectInfo * connectInfo = [WKConnectInfo new ];
connectInfo . uid = "xxxx" ; // User uid (registered with IM communication end by business server)
connectInfo . token = "xxxx" ; // User token (registered with IM communication end by business server)
return connectInfo;
};
For more configuration options, check [WKSDK shared].options
Swift Configuration
WKSDK. shared . options . host = "xxx.xxx.xxx.xxx" // IM communication IP
WKSDK. shared . options . port = 5100 // IM communication TCP port
// Set IM connection authentication information
WKSDK. shared . options . connectInfoCallback = {
let connectInfo = WKConnectInfo ()
connectInfo. uid = "xxxx" // User uid
connectInfo. token = "xxxx" // User token
return connectInfo
}
Advanced Configuration
// Set connection timeout
[WKSDK shared ].options.connectTimeout = 10 ; // 10 seconds
// Set heartbeat interval
[WKSDK shared ].options.heartbeatInterval = 30 ; // 30 seconds
// Set auto-reconnect
[WKSDK shared ].options.autoReconnect = YES ;
// Set max reconnect attempts
[WKSDK shared ].options.maxReconnectAttempts = 10 ;
// Set reconnect interval
[WKSDK shared ].options.reconnectInterval = 5 ; // 5 seconds
Connect
// Connect
[[WKSDK shared ].connectionManager connect ];
// Swift
WKSDK. shared . connectionManager . connect ()
Disconnect
// Disconnect - NO: SDK maintains reconnection mechanism, YES: SDK will no longer reconnect
[[WKSDK shared ].connectionManager disconnect: NO ];
// Swift
WKSDK. shared . connectionManager . disconnect ( false ) // false: maintain reconnection
Connection Status Monitoring
[WKSDK.shared.connectionManager addDelegate: self ]; // WKConnectionManagerDelegate
// Swift
WKSDK. shared . connectionManager . addDelegate ( self ) // WKConnectionManagerDelegate
Delegate Implementation
// ---------- WKConnectionManagerDelegate ----------
/**
Connection status monitoring
*/
- ( void ) onConnectStatus:(WKConnectStatus)status reasonCode:(WKReason)reasonCode {
switch (status) {
case WKConnecting:
NSLog ( @"Connecting..." );
break ;
case WKConnected:
NSLog ( @"Connected successfully!" );
break ;
case WKDisconnected:
NSLog ( @"Disconnected, reason: %d " , reasonCode);
break ;
case WKConnectFail:
NSLog ( @"Connection failed, reason: %d " , reasonCode);
break ;
}
}
/**
Connection kicked off (logged in from another device)
*/
- ( void ) onKick:(WKReason)reasonCode {
NSLog ( @"Kicked off, reason: %d " , reasonCode);
// Handle being kicked off, usually show login page
}
// Swift implementation
extension YourViewController : WKConnectionManagerDelegate {
func onConnectStatus ( _ status : WKConnectStatus, reasonCode : WKReason) {
switch status {
case . connecting :
print ( "Connecting..." )
case . connected :
print ( "Connected successfully!" )
case . disconnected :
print ( "Disconnected, reason: \( reasonCode ) " )
case . connectFail :
print ( "Connection failed, reason: \( reasonCode ) " )
@unknown default :
break
}
}
func onKick ( _ reasonCode : WKReason) {
print ( "Kicked off, reason: \( reasonCode ) " )
// Handle being kicked off
}
}
Connection Status Types
Status Description WKConnectingConnecting to server WKConnectedSuccessfully connected WKDisconnectedDisconnected from server WKConnectFailConnection failed
Reason Codes
Common reason codes for connection status changes:
Code Description WKReasonConnectSuccessConnection successful WKReasonConnectTimeoutConnection timeout WKReasonAuthFailAuthentication failed WKReasonNetworkErrorNetwork error WKReasonKickOffKicked off by another device
Best Practices
1. Connection Lifecycle Management
// In AppDelegate
- ( void )applicationDidBecomeActive:(UIApplication * )application {
// App becomes active, connect if needed
if ( ! [WKSDK.shared.connectionManager isConnected ]) {
[WKSDK.shared.connectionManager connect ];
}
}
- ( void )applicationDidEnterBackground:(UIApplication * )application {
// App enters background, you may choose to disconnect
// [WKSDK.shared.connectionManager disconnect:NO];
}
2. Network Status Monitoring
#import <SystemConfiguration/SystemConfiguration.h>
// Monitor network reachability
- ( void )startNetworkMonitoring {
// Implementation depends on your network monitoring solution
// When network becomes available, reconnect
[WKSDK.shared.connectionManager connect ];
}
3. Error Handling
- ( void ) onConnectStatus:(WKConnectStatus)status reasonCode:(WKReason)reasonCode {
if (status == WKConnectFail) {
switch (reasonCode) {
case WKReasonAuthFail:
// Handle authentication failure - refresh token
[ self refreshTokenAndReconnect ];
break ;
case WKReasonNetworkError:
// Handle network error - retry later
[ self scheduleReconnect ];
break ;
default :
break ;
}
}
}
Next Steps
Message Handling Learn how to send and receive messages
Channel Management Manage channels and groups
Conversation Management Handle conversation lists
Media Messages Handle image, voice, and video messages