From 0767e1c225c8ff84130baf3514aa87f8d06c6859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=85=86=E9=91=AB?= <1586908883@qq.com> Date: Tue, 17 Dec 2024 10:34:31 +0800 Subject: [PATCH] Changes --- .../webSocket/ChatWebSocketHandler.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/main/java/com/wsk/controller/webSocket/ChatWebSocketHandler.java diff --git a/src/main/java/com/wsk/controller/webSocket/ChatWebSocketHandler.java b/src/main/java/com/wsk/controller/webSocket/ChatWebSocketHandler.java new file mode 100644 index 0000000..09952cf --- /dev/null +++ b/src/main/java/com/wsk/controller/webSocket/ChatWebSocketHandler.java @@ -0,0 +1,79 @@ +package com.wsk.controller.webSocket; + +import com.wsk.tool.SaveSession; +import org.springframework.web.socket.CloseStatus; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; +import org.springframework.web.socket.handler.TextWebSocketHandler; + +import java.io.IOException; +import java.util.*; + +/** + * Created by wsk1103 on 2017/5/22. + */ +public class ChatWebSocketHandler extends TextWebSocketHandler { + + private final static List sessions = Collections.synchronizedList(new ArrayList()); + + //接收文本消息,并发送出去 + @Override + protected void handleTextMessage(WebSocketSession session, TextMessage message) { +// System.out.println(session.getId()+":send...."); +// chatTextMessageHandler(message.getPayload()); + try { +// super.handleTextMessage(session, message); +// System.out.println(session.getId()+" :"+message.getPayload() + " " + new Date()); + String m = message.getPayload(); + String[] wsk = m.split(","); + String phone = wsk[0]; + long time = Long.parseLong(wsk[1]); + String action = wsk[2]; + if (action.equals("start")){ + session.sendMessage(new TextMessage("success")); + SaveSession.getInstance().save(phone,time); + return; + } + boolean b = SaveSession.getInstance().isHave(phone,time); + if (b) { + if (session.isOpen()) { + session.sendMessage(new TextMessage("error")); + } + } else { + if (session.isOpen()) + session.sendMessage(new TextMessage("success")); + } + } catch (Exception e) { + e.printStackTrace(); + try { + session.sendMessage(new TextMessage("error")); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + + //连接建立后处理 + @SuppressWarnings("unchecked") + @Override + public void afterConnectionEstablished(WebSocketSession session) { + sessions.add(session); + //处理离线消息 + } + + //抛出异常时处理 + @Override + public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + if (session.isOpen()) { + session.close(); + } + sessions.remove(session); + } + + //连接关闭后处理 + @Override + public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) { + sessions.remove(session); + } + +} \ No newline at end of file