Simple chat app
1 to 1 Chat
Server
import com.socketio4j.socketio.*;
/**
* Direct 1-to-1 Chat Server (single file)
* Room name is deterministic: alphabetical pair
* e.g. directRoom("bob","alice") = "alice:bob"
*/
public class DirectChatServer {
public static void main(String[] args) {
Configuration cfg = new Configuration();
cfg.setHostname("localhost");
cfg.setPort(9092);
SocketIOServer server = new SocketIOServer(cfg);
// client requests to join direct chat room
server.addEventListener("chat:join", ChatRequest.class, (client, req, ack) -> {
String room = RoomUtil.directRoom(req.me, req.with);
client.joinRoom(room);
log.info("{} joined room {}", req.me, room);
});
// send direct message to private room
server.addEventListener("chat:msg", ChatMessage.class, (client, msg, ack) -> {
String room = RoomUtil.directRoom(msg.from, msg.to);
server.getRoomOperations(room).sendEvent("chat:msg", msg);
});
server.start();
log.info("Direct chat server :9092 started");
}
// === Data Structures ===
public static class ChatRequest {
public String me; // current user
public String with; // target user
}
public static class ChatMessage {
public String from; // sender
public String to; // receiver
public String text; // message
}
// === Utility Class ===
public static class RoomUtil {
/**
* Deterministic private room name
* ensures same room for both orders
*/
public static String directRoom(String u1, String u2) {
if (u1.compareToIgnoreCase(u2) < 0) return u1 + ":" + u2;
return u2 + ":" + u1;
}
}
}
Client
Group Chat
Server
Client
Last updated
Was this helpful?