@ServerEndpoint("/dukeetf")
public class ETFEndpoint {
private static final Logger logger = Logger.getLogger("ETFEndpoint");
/* Очередь для всех открытых сессий веб-сокета */
static Queue<Session> queue = new ConcurrentLinkedQueue<>();
/* PriceVolumeBean вызывает этот метод для отправки обновлений */
public static void send(double price, int volume) {
String msg = String.format("%.2f / %d", price, volume);
try {
/* Отправка обновления во все открытые сессии веб-сокета */
for (Session session : queue) {
session.getBasicRemote().sendText(msg);
logger.log(Level.INFO, "Sent: {0}", msg);
}
} catch (IOException e) {
logger.log(Level.INFO, e.toString());
}
}
...
}