diff --git a/src/main/java/com/example/cosmos_serversb/resources/WebSocket.java b/src/main/java/com/example/cosmos_serversb/resources/WebSocket.java new file mode 100644 index 0000000..a6d29ed --- /dev/null +++ b/src/main/java/com/example/cosmos_serversb/resources/WebSocket.java @@ -0,0 +1,51 @@ +package com.example.cosmos_serversb.resources; + +import javax.websocket.*; +import javax.websocket.server.ServerEndpoint; +import java.io.IOException; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; + +@ServerEndpoint("/websocket") +public class WebSocket { + private static final Queue sessions = new ConcurrentLinkedQueue<>(); + + @OnOpen + public void onOpen(Session session) { + /* セッション確立時の処理 */ + sessions.add(session); + System.out.println("WebSocketセッション確立"); + } + + @OnMessage + public String onMessage(String message) { + /* メッセージ受信時の処理 */ + System.out.println("WebSocket受信:" + message); + return "正常にメッセージを受信しました。"; + } + +// @OnMessage +// public void onMessage(String message, Session session) throws IOException { +// //session.getBasicRemote().sendText(message); //メッセージの送信が完了するまで待機 +// session.getAsyncRemote().sendText(message); //非同期で送信 +// } + + @OnError + public void onError(Throwable th) { + /* エラー発生時の処理 */ + System.out.println("WebSocketエラー:" + th.getMessage()); + } + + @OnClose + public void onClose(Session session) { + /* セッション解放時の処理 */ + sessions.remove(session); + System.out.println("WebSocketセッションを削除"); + } + + public static void broadcast() { + sessions.forEach(session -> { + session.getAsyncRemote().sendText("Broadcast : "); + }); + } +}