1. 程式人生 > >springmvc+websocket 框架搭建

springmvc+websocket 框架搭建

package com.cuit.secims.mw.ws; import java.util.ArrayList; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketMessage; import
org.springframework.web.socket.WebSocketSession; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; public class MyWebSocketHandler implements WebSocketHandler{ private static final Logger log = Logger.getLogger(MyWebSocketHandler.class); // 儲存所有的使用者session private
static final ArrayList<WebSocketSession> users = new ArrayList<WebSocketSession>(); // 連線 就緒時 @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { log.info("connect websocket success......."); users.add(session); } // 處理資訊
@Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { Gson gson = new Gson(); // 將訊息JSON格式通過Gson轉換成Map // message.getPayload().toString() 獲取訊息具體內容 Map<String, Object> msg = gson.fromJson(message.getPayload().toString(), new TypeToken<Map<String, Object>>() {}.getType()); log.info("handleMessage......."+message.getPayload()+"..........."+msg); // session.sendMessage(message); // 處理訊息 msgContent訊息內容 TextMessage textMessage = new TextMessage(msg.get("msgContent").toString(), true); // 呼叫方法(傳送訊息給所有人) sendMsgToAllUsers(textMessage); } // 處理傳輸時異常 @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { // TODO Auto-generated method stub } // 關閉 連線時 @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { log.info("connect websocket closed......."); users.remove(session); } @Override public boolean supportsPartialMessages() { // TODO Auto-generated method stub return false; } // 給所有使用者傳送 資訊 public void sendMsgToAllUsers(WebSocketMessage<?> message) throws Exception{ for (WebSocketSession user : users) { user.sendMessage(message); } } }