This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus-examples.git
The following commit(s) were added to refs/heads/camel-quarkus-main by this
push:
new 3bd745af Simplify vertx-websocket-chat UI
3bd745af is described below
commit 3bd745afd9b0d4c8981de3cba62d489bb55da51f
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);
}