diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2023-12-21 14:12:59 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2023-12-21 14:12:59 +0200 |
commit | 4329c5067f1a481e9fa4876169746a5d164b87e3 (patch) | |
tree | 861ff0239aaea4f589c7c56381a2691c01860fe6 /src/main/java/me/imsonmia/epqapi/messaging/WebSocketHandler.java | |
parent | 74700bfdc2b28c846cc372bac547187ebe986ab5 (diff) | |
download | epq-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.java | 71 |
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"); - } - }); - } -} |