Memory Store + Redis Pub/Sub Event Store
import com.socketio4j.socketio.Configuration;
import com.socketio4j.socketio.SocketIOServer;
import com.socketio4j.socketio.store.memory.MemoryStoreFactory;
import com.socketio4j.socketio.store.redis_pubsub.RedisPubSubEventStore;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class Application {
private SocketIOServer server;
public void start() {
// --- Redis event propagation setup ---
Config redissonCfg = new Config();
redissonCfg.useSingleServer()
.setAddress("redis://127.0.0.1:6379"); // DragonflyDB / Valkey also works
RedissonClient redisson = Redisson.create(redissonCfg);
// event store → redis pub/sub
RedisPubSubEventStore eventStore =
new RedisPubSubEventStore(redisson, redisson, null, null);
// store factory → memory session store + Redis event propagation
MemoryStoreFactory storeFactory = new MemoryStoreFactory(eventStore);
// --- Socket.IO Server config ---
Configuration config = new Configuration();
config.setHostname("0.0.0.0");
config.setPort(8080);
config.setStoreFactory(storeFactory);
server = new SocketIOServer(config);
// optional: listeners
server.addConnectListener(client -> {
log.info("Client connected: {}", client.getSessionId());
});
server.addDisconnectListener(client -> {
log.info("Client disconnected: {}", client.getSessionId());
});
server.start();
log.info("Socket.IO server started on port 8080");
}
public void stop() {
if (server != null) {
log.info("Stopping server...");
server.stop();
server.getConfiguration().getStoreFactory().shutdown();
}
}
public static void main(String[] args) throws Exception {
Application app = new Application();
app.start();
log.info("Press Enter to stop");
System.in.read();
app.stop();
}
}Last updated
Was this helpful?