From a3f84126ef08a3bf4fb20c92517f79455dd49feb Mon Sep 17 00:00:00 2001 From: Martin Ocenas Date: Thu, 27 Jul 2023 14:00:10 +0200 Subject: [PATCH 1/2] Fix join message in websocket quickstart There should be a "joined" message on user joining, but no message is acctually sent. No "ready" message is generated on user joining, so move this message to user incoming. --- .../src/main/java/org/acme/websockets/ChatSocket.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/websockets-quickstart/src/main/java/org/acme/websockets/ChatSocket.java b/websockets-quickstart/src/main/java/org/acme/websockets/ChatSocket.java index d51c7a8af9..894c16e899 100644 --- a/websockets-quickstart/src/main/java/org/acme/websockets/ChatSocket.java +++ b/websockets-quickstart/src/main/java/org/acme/websockets/ChatSocket.java @@ -24,6 +24,7 @@ public class ChatSocket { @OnOpen public void onOpen(Session session, @PathParam("username") String username) { + broadcast("User " + username + " joined"); sessions.put(username, session); } @@ -42,11 +43,7 @@ public void onError(Session session, @PathParam("username") String username, Thr @OnMessage public void onMessage(String message, @PathParam("username") String username) { - if (message.equalsIgnoreCase("_ready_")) { - broadcast("User " + username + " joined"); - } else { - broadcast(">> " + username + ": " + message); - } + broadcast(">> " + username + ": " + message); } private void broadcast(String message) { From 5462734350c503d5e7199aa39f885a7ef49eff3e Mon Sep 17 00:00:00 2001 From: Martin Ocenas Date: Mon, 7 Aug 2023 11:19:49 +0200 Subject: [PATCH 2/2] Fix test for websocket connect message --- .../java/org/acme/websockets/ChatTest.java | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/websockets-quickstart/src/test/java/org/acme/websockets/ChatTest.java b/websockets-quickstart/src/test/java/org/acme/websockets/ChatTest.java index f7be6effb2..4cc155e7ef 100644 --- a/websockets-quickstart/src/test/java/org/acme/websockets/ChatTest.java +++ b/websockets-quickstart/src/test/java/org/acme/websockets/ChatTest.java @@ -1,20 +1,17 @@ package org.acme.websockets; -import java.net.URI; -import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.TimeUnit; - +import io.quarkus.test.common.http.TestHTTPResource; +import io.quarkus.test.junit.QuarkusTest; import jakarta.websocket.ClientEndpoint; import jakarta.websocket.ContainerProvider; import jakarta.websocket.OnMessage; -import jakarta.websocket.OnOpen; import jakarta.websocket.Session; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.quarkus.test.common.http.TestHTTPResource; -import io.quarkus.test.junit.QuarkusTest; +import java.net.URI; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.TimeUnit; @QuarkusTest public class ChatTest { @@ -24,27 +21,24 @@ public class ChatTest { @TestHTTPResource("/chat/stu") URI uri; + @TestHTTPResource("/chat/foo") + URI uriUserFoo; + @Test public void testWebsocketChat() throws Exception { try (Session session = ContainerProvider.getWebSocketContainer().connectToServer(Client.class, uri)) { - Assertions.assertEquals("CONNECT", MESSAGES.poll(10, TimeUnit.SECONDS)); - Assertions.assertEquals("User stu joined", MESSAGES.poll(10, TimeUnit.SECONDS)); session.getAsyncRemote().sendText("hello world"); Assertions.assertEquals(">> stu: hello world", MESSAGES.poll(10, TimeUnit.SECONDS)); + + // We need another user to connect, so we can see connect message + ContainerProvider.getWebSocketContainer().connectToServer(Client.class, uriUserFoo); + + Assertions.assertEquals("User foo joined", MESSAGES.poll(10, TimeUnit.SECONDS)); } } @ClientEndpoint public static class Client { - - @OnOpen - public void open(Session session) { - MESSAGES.add("CONNECT"); - // Send a message to indicate that we are ready, - // as the message handler may not be registered immediately after this callback. - session.getAsyncRemote().sendText("_ready_"); - } - @OnMessage void message(String msg) { MESSAGES.add(msg);