Socket connect callback not gets called and emitted event don't reach to server
Following is my Socket Helper class
` class SocketHelper {
//static let shared = SocketHelper()
private static var privateShared : SocketHelper?
var socket: SocketIOClient!
let manager = SocketManager(socketURL: URL(string: ApiUrls.socketUrl)!, config: [.log(true), .compress, .connectParams(["token": Globals.shared.session.accessToken]), .secure(true), .forceNew(true), .reconnects(false), .forcePolling(true)])
private init() {
socket = self.manager.defaultSocket
}
class func shared() -> SocketHelper { // change class to final to prevent override
guard let uwShared = privateShared else {
privateShared = SocketHelper()
return privateShared!
}
return uwShared
}
func getSocketWithLazyConnect() -> SocketIOClient {
if self.socket.status == .connected {
return self.socket
}
self.manager.connectSocket(self.socket)
return self.socket
}
func disconnect() {
self.manager.disconnectSocket(self.socket)
}
func isConnected() -> Bool {
return self.socket.status == .connected
}
func destroy() {
SocketHelper.privateShared = nil
}
} `
Following is the log when socket's connect call back is not fired
2020-11-30 15:23:13.045002+0530 Capshot[22683:7735199] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting 2020-11-30 15:23:13.045199+0530 Capshot[22683:7735199] LOG SocketManager: Adding engine 2020-11-30 15:23:13.046633+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: connect 2020-11-30 15:23:13.046639+0530 Capshot[22683:7735371] LOG SocketEngine: Starting engine. Server: https://test-chat.capshot.xyz 2020-11-30 15:23:13.046734+0530 Capshot[22683:7735371] LOG SocketEngine: Handshaking 2020-11-30 15:23:13.047009+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: connect 2020-11-30 15:23:13.047171+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: loadConversations 2020-11-30 15:23:13.047240+0530 Capshot[22683:7735371] LOG SocketEnginePolling: Doing polling GET socket url 2020-11-30 15:23:13.047261+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: loadConversations 2020-11-30 15:23:13.047437+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: newMessage 2020-11-30 15:23:13.048020+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: newMessage 2020-11-30 15:23:13.048089+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: getDeck 2020-11-30 15:23:13.048155+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: getDeck 2020-11-30 15:23:13.048215+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: conversationsUpdate 2020-11-30 15:23:13.048279+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: conversationsUpdate 2020-11-30 15:23:13.048372+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: clearConversation 2020-11-30 15:23:13.048882+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: clearConversation 2020-11-30 15:23:13.048946+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: msgReq 2020-11-30 15:23:13.049012+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: msgReq 2020-11-30 15:23:13.049071+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: getMessages 2020-11-30 15:23:13.049138+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: getMessages 2020-11-30 15:23:13.049228+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: reaction 2020-11-30 15:23:13.049398+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: reaction 2020-11-30 15:23:13.049553+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: disconnect 2020-11-30 15:23:13.049881+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Removing handler for event: err 2020-11-30 15:23:13.050510+0530 Capshot[22683:7735199] LOG SocketIOClient{/}: Adding handler for event: err
And I calling socket.connect and emit function in following way ` func switchOn() {
if self.isOn() {
DCDebug.print("Chat is already on")
return
}
// Save current logged in user in database
self.saveOrUpdateCurrentUser()
// Intialize socket
self.socket = SocketHelper.shared().getSocketWithLazyConnect()
// Connect Event
self.socket?.off("connect")
self.socket?.on("connect", callback: { (data, ack) in
self.socket?.emit(Constants.SocketEvent.loadConversations)
})
// Load Conversations Event
self.socket?.off(Constants.SocketEvent.loadConversations)
self.socket?.on(Constants.SocketEvent.loadConversations, callback: { (data, ack) in
self.handleLoadConversationResponse(data: data)
})
// New Message event
self.socket?.off(Constants.SocketEvent.newMessage)
self.socket?.on(Constants.SocketEvent.newMessage, callback: { (data, ack) in
self.handleNewMessageResponse(data: data)
})
// Get deck event
self.socket?.off(Constants.SocketEvent.getDeck)
self.socket?.on(Constants.SocketEvent.getDeck, callback: { (data, ack) in
self.handleGetDeckResponse(data: data)
})
// Conversations Update event
self.socket?.off(Constants.SocketEvent.conversationsUpdate)
self.socket?.on(Constants.SocketEvent.conversationsUpdate, callback: { (data, ack) in
self.handleConversationsUpdateResponse(data: data)
})
self.socket?.off(Constants.SocketEvent.clearConversation)
self.socket?.on(Constants.SocketEvent.clearConversation, callback: { (data, ack) in
self.handleClearConversationResponse(data: data)
})
// Message request event
self.socket?.off(Constants.SocketEvent.msgReq)
self.socket?.on(Constants.SocketEvent.msgReq, callback: { (data, ack) in
self.handleMessageReqeuestResponse(data: data)
})
// Get messages event
self.socket?.off(Constants.SocketEvent.getMessages)
self.socket?.on(Constants.SocketEvent.getMessages, callback: { (data, ack) in
self.handleGetMessagesResponse(data: data)
})
// Reaction event
self.socket?.off(Constants.SocketEvent.reaction)
self.socket?.on(Constants.SocketEvent.reaction, callback: { (data, ack) in
self.handleReactionEventResponse(data: data)
})
self.socket?.on("disconnect", callback: { (data, ack) in
DCDebug.print("Socket disconnected, \(data)")
})
// Error event
self.socket?.off(Constants.SocketEvent.errorMessage)
self.socket?.on(Constants.SocketEvent.errorMessage, callback: { (data, ack) in
DCDebug.print("Error, \(data)")
})
}`
I am doing something wrong ? Also calling disconnect function from SocketHelper doesn't disconnect socket completely it keeps printing log in console @nuclearace can you please help
@nuclearace any help ?
hi I am also facing same issue my socket connection is not stable during first time connected every second socket connection state change connecting connected and then disconnected these are change continously plase help me if you have any solution
@nuclearace help me please this is my socket status changes every second... statusChange connected socket connected 3-CUHB5QfJ2XVzfwAAbu statusChange connecting statusChange connected socket connected k1zC8L80WbS_7qg_AAbv statusChange connecting statusChange connected socket connected -GCAD0IaUxELBCZ0AAbw statusChange connecting statusChange connected socket connected NX37nLrSXdFQDeQ6AAbx statusChange connecting statusChange connected socket connected PZtLA-BvSTQDp_ZRAAby statusChange connecting statusChange connected socket connected 0_lJxZjzxjp8plpiAAbz statusChange connecting statusChange connected socket connected q-5ag4XdfJxBTtILAAb0 statusChange connecting statusChange connected socket connected vRIzDTSXH4uLddXLAAb1 statusChange disconnected
This work for me: you should downgrade your socketIO server to 2.4.1. https://stackoverflow.com/questions/65404212/socket-io-ios-client-says-its-connected-to-server-despite-connection-event-n
Are ANY issues being fixed on this repository?