This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus-examples.git
commit b4cf90a5e7b11e22ab87fd772415d2e0a5b81e51 Author: James Netherton <[email protected]> AuthorDate: Wed Oct 22 11:09:55 2025 +0100 Simplify vertx-websocket-chat UI --- vertx-websocket-chat/pom.xml | 8 --- .../java/org/acme/websocket/WebSocketRoutes.java | 28 +--------- .../main/resources/META-INF/resources/index.html | 65 ++-------------------- 3 files changed, 5 insertions(+), 96 deletions(-) diff --git a/vertx-websocket-chat/pom.xml b/vertx-websocket-chat/pom.xml index 8e5fe2d8..51dc2542 100644 --- a/vertx-websocket-chat/pom.xml +++ b/vertx-websocket-chat/pom.xml @@ -74,10 +74,6 @@ <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-bean</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-jackson</artifactId> - </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-vertx-websocket</artifactId> @@ -86,10 +82,6 @@ <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-direct</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-rest</artifactId> - </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-arc</artifactId> diff --git a/vertx-websocket-chat/src/main/java/org/acme/websocket/WebSocketRoutes.java b/vertx-websocket-chat/src/main/java/org/acme/websocket/WebSocketRoutes.java index b9bb127b..81899bc4 100644 --- a/vertx-websocket-chat/src/main/java/org/acme/websocket/WebSocketRoutes.java +++ b/vertx-websocket-chat/src/main/java/org/acme/websocket/WebSocketRoutes.java @@ -22,7 +22,6 @@ import jakarta.inject.Inject; import org.apache.camel.Message; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.vertx.websocket.VertxWebsocketConstants; -import org.apache.camel.model.rest.RestBindingMode; import org.jboss.logging.Logger; @ApplicationScoped @@ -58,22 +57,8 @@ public class WebSocketRoutes extends RouteBuilder { .to("vertx-websocket:/chat/{userName}?sendToAll=true") .endChoice() - // Capture MESSAGE events and broadcast them to all connected peers or specified peer + // Capture MESSAGE events and broadcast them to all connected peers .when(simple("${header.CamelVertxWebsocket.event} == 'MESSAGE'")) - .choice() - .when(body().contains("recipientName")) - .unmarshal().json(ChatMessage.class) - .process(exchange -> { - Message message = exchange.getMessage(); - ChatMessage chatMessage = message.getBody(ChatMessage.class); - - String recipientConnectionKey = sessionManager.getConnectionKey(chatMessage.getRecipientName()); - exchange.getMessage().setHeader(VertxWebsocketConstants.CONNECTION_KEY, recipientConnectionKey); - exchange.getMessage().setBody(chatMessage); - }) - .setBody().simple("<<<<< ${header.userName}: ${body.messageContent}") - .to("vertx-websocket:/chat/{userName}") - .otherwise() .log("New message from user ${header.userName}: ${body}") .setBody().simple("<<<<< ${header.userName}: ${body}") .to("vertx-websocket:/chat/{userName}?sendToAll=true") @@ -100,16 +85,5 @@ public class WebSocketRoutes extends RouteBuilder { .setBody().simple("<<<<< ${header.userName} left the chat") .to("vertx-websocket:/chat/{userName}?sendToAll=true") .endChoice(); - - //Displays list of connected users in the UI - restConfiguration().bindingMode(RestBindingMode.json); - - rest("/peers") - .get() - .to("direct:getConnectedUsers"); - - from("direct:getConnectedUsers") - .setBody(method(sessionManager, "getAllConnectedUsers")); - } } diff --git a/vertx-websocket-chat/src/main/resources/META-INF/resources/index.html b/vertx-websocket-chat/src/main/resources/META-INF/resources/index.html index 549b3595..b6a1b437 100644 --- a/vertx-websocket-chat/src/main/resources/META-INF/resources/index.html +++ b/vertx-websocket-chat/src/main/resources/META-INF/resources/index.html @@ -66,11 +66,8 @@ <label for="message" class="col-form-label">Message</label> <input type="text" class="form-control" id="message" style="width:50%"/> </div> - <div class="dropdown"> - <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" id="sending" onclick="listUsers()">Send</button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1" id="userList"> - - </ul> + <div class="mb-3"> + <button type="button" class="btn btn-primary" id="send" onclick="sendMessage()">Send</button> </div> </div> </div> @@ -82,6 +79,7 @@ const message = $("#message"); const connectDialog = $("#connect-dialog"); const chatDialog = $("#chat-dialog"); + let socket; userName.val(""); chat.val(""); @@ -111,7 +109,7 @@ }); socket.addEventListener("error", (event) => { - console.log("WebSocket error: ", event); + console.log("WebSocket error: ", event); }); socket.addEventListener("open", (event) => { @@ -138,61 +136,6 @@ } } - function sendDM(user){ - let recipient = user; - - let data = { - recipientName: recipient, - messageContent: message.val() - }; - - if (recipient.length && message.length) { - socket.send(JSON.stringify(data)); - chat.val(chat.val() + ">>>>> " + userName.val() + ": " + message.val() + "\n"); - message.val(""); - scrollChat(); - } - } - - async function getConnectedUsers() { - try{ - const response = await fetch('/peers'); - const peers = await response.json(); - return peers; - }catch(error){ - console.log('Error',error); - throw error; - } - } - - async function listUsers() { - const currentUser = userName.val().trim(); - let userList = document.getElementById("userList"); - userList.innerHTML = ""; - try { - let connectedUsers = await getConnectedUsers(); - connectedUsers.forEach(function(user) { - if (user !== currentUser){ - let listItem = document.createElement("button"); - listItem.classList.add("dropdown-item"); - listItem.innerText = user; - listItem.addEventListener("click", function() { - sendDM(user); - }); - userList.appendChild(listItem); - } - }); - - let sendAll = document.createElement("button"); - sendAll.classList.add("dropdown-item"); - sendAll.innerText = "Send All"; - sendAll.addEventListener("click", sendMessage); - userList.appendChild(sendAll); - } catch(error) { - console.error('Error populating user list:', error); - } - } - function scrollChat() { chat.scrollTop($(chat)[0].scrollHeight); }
