aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2023-12-21 14:12:59 +0200
committerZhongheng Liu <z.liu@outlook.com.gr>2023-12-21 14:12:59 +0200
commit4329c5067f1a481e9fa4876169746a5d164b87e3 (patch)
tree861ff0239aaea4f589c7c56381a2691c01860fe6 /src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java
parent74700bfdc2b28c846cc372bac547187ebe986ab5 (diff)
downloadepq-api-4329c5067f1a481e9fa4876169746a5d164b87e3.tar.gz
epq-api-4329c5067f1a481e9fa4876169746a5d164b87e3.tar.bz2
epq-api-4329c5067f1a481e9fa4876169746a5d164b87e3.zip
first successful ws impl
Diffstat (limited to 'src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java')
-rw-r--r--src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java71
1 files changed, 0 insertions, 71 deletions
diff --git a/src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java b/src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java
deleted file mode 100644
index 25d653d..0000000
--- a/src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package me.imsonmia.epqapi.messaging;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import org.slf4j.Logger;
-
-import jakarta.websocket.EncodeException;
-import jakarta.websocket.OnClose;
-import jakarta.websocket.OnMessage;
-import jakarta.websocket.OnOpen;
-import jakarta.websocket.Session;
-import jakarta.websocket.server.ServerEndpoint;
-import me.imsonmia.epqapi.model.ChatConvert;
-import me.imsonmia.epqapi.model.ChatMessage;
-import me.imsonmia.epqapi.repository.ChatMessageRepository;
-
-// https://www.baeldung.com/java-websockets
-@ServerEndpoint(
- value = "/chat/{username}",
- encoders = MessageEncoder.class,
- decoders = MessageDecoder.class
- )
-public class WebSocketHandler {
- private Logger logger;
- private ChatMessageRepository chatMessageRepository;
- private Session session;
- private Set<WebSocketHandler> chatEndpoints = new CopyOnWriteArraySet<>();
- private HashMap<String, String> users = new HashMap<>();
- @OnOpen
- public void onOpen(Session session, String username) throws IOException {
- this.session = session;
- chatEndpoints.add(this);
- users.put(session.getId(), username);
- Message message = new Message();
- message.setFrom(username);
- message.setContent("Connected, hello world!");
- broadcast(message);
- ChatMessage cmessage = new ChatConvert().fromMessage(message);
- chatMessageRepository.save(cmessage);
- }
- @OnMessage
- public void onMessage(Session session, Message message) throws IOException {
- message.setFrom(users.get(session.getId()));
- broadcast(message);
- }
- @OnClose
- public void onClose(Session session) throws IOException {
- chatEndpoints.remove(this);
- Message message = new Message();
- message.setFrom(users.get(session.getId()));
- message.setContent("Disconnected!");
- broadcast(message);
- }
- public void broadcast(Message message) {
- chatEndpoints.forEach(endpoint -> {
- try {
- endpoint.session.getBasicRemote().sendObject(message);
- }
- catch (IOException e) {
- logger.info("Error sending message! IOException");
- logger.error(null, e);
- }
- catch (EncodeException e) {
- logger.info("Error sending message! EncodeException");
- }
- });
- }
-}