Created
October 8, 2022 07:17
-
-
Save smadil997/131dffd03d7fe976b38084640a42eaa9 to your computer and use it in GitHub Desktop.
This is socket IO controller.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.alis.soft.socketIO.socketcontroller; | |
import com.alis.soft.socketIO.data.Message; | |
import com.corundumstudio.socketio.AckRequest; | |
import com.corundumstudio.socketio.SocketIOClient; | |
import com.corundumstudio.socketio.SocketIOServer; | |
import com.corundumstudio.socketio.listener.ConnectListener; | |
import com.corundumstudio.socketio.listener.DataListener; | |
import com.corundumstudio.socketio.listener.DisconnectListener; | |
import lombok.extern.log4j.Log4j2; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.stereotype.Component; | |
@Component | |
@Log4j2 | |
public class SocketIOController { | |
@Autowired | |
private SocketIOServer socketServer; | |
SocketIOController(SocketIOServer socketServer){ | |
this.socketServer=socketServer; | |
this.socketServer.addConnectListener(onUserConnectWithSocket); | |
this.socketServer.addDisconnectListener(onUserDisconnectWithSocket); | |
/** | |
* Here we create only one event listener | |
* but we can create any number of listener | |
* messageSendToUser is socket end point after socket connection user have to send message payload on messageSendToUser event | |
*/ | |
this.socketServer.addEventListener("messageSendToUser", Message.class, onSendMessage); | |
} | |
public ConnectListener onUserConnectWithSocket = new ConnectListener() { | |
@Override | |
public void onConnect(SocketIOClient client) { | |
log.info("Perform operation on user connect in controller"); | |
} | |
}; | |
public DisconnectListener onUserDisconnectWithSocket = new DisconnectListener() { | |
@Override | |
public void onDisconnect(SocketIOClient client) { | |
log.info("Perform operation on user disconnect in controller"); | |
} | |
}; | |
public DataListener<Message> onSendMessage = new DataListener<Message>() { | |
@Override | |
public void onData(SocketIOClient client, Message message, AckRequest acknowledge) throws Exception { | |
/** | |
* Sending message to target user | |
* target user should subscribe the socket event with his/her name. | |
* Send the same payload to user | |
*/ | |
log.info(message.getSenderName()+" user send message to user "+message.getTargetUserName()+" and message is "+message.getMessage()); | |
socketServer.getBroadcastOperations().sendEvent(message.getTargetUserName(),client, message); | |
/** | |
* After sending message to target user we can send acknowledge to sender | |
*/ | |
acknowledge.sendAckData("Message send to target user successfully"); | |
} | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment