Skip to content

Instantly share code, notes, and snippets.

@smadil997
Created October 8, 2022 07:17
Show Gist options
  • Save smadil997/131dffd03d7fe976b38084640a42eaa9 to your computer and use it in GitHub Desktop.
Save smadil997/131dffd03d7fe976b38084640a42eaa9 to your computer and use it in GitHub Desktop.
This is socket IO controller.
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