Stock market app
Server
import com.socketio4j.socketio.*;
import java.util.*;
import java.util.concurrent.*;
/**
* Stock Market Server (room-based)
*
* Each stockId is a room.
* Clients subscribe to a stock to join that room.
* Periodic price updates are sent only to subscribers.
*
* Example stocks: AAPL, GOOG, TSLA, MSFT
*/
public class StockMarketServer {
public static void main(String[] args) {
Configuration cfg = new Configuration();
cfg.setHostname("localhost");
cfg.setPort(9092);
SocketIOServer server = new SocketIOServer(cfg);
// subscribe to stock & join stock room
server.addEventListener("stock:subscribe", String.class, (client, stockId, ack) -> {
client.joinRoom(stockId);
log.info("Client subscribed to => {}", stockId);
});
server.start();
log.info("Stock Market Server running on :9092");
// simulated real-time prices
String[] stocks = { "AAPL", "GOOG", "TSLA", "MSFT" };
Random random = new Random();
ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
exec.scheduleAtFixedRate(() -> {
for (String s : stocks) {
double price = 100 + random.nextDouble() * 50;
server.getRoomOperations(s).sendEvent("stock:price", s, price);
}
}, 0, 1, TimeUnit.SECONDS);
}
}
Client
Last updated
Was this helpful?