java websocket请求参数_spring(spring mvc)整合WebSocket案例(获取请求参数)
packagecom.snw.supplyChain.websocket;importcom.snw.supplyChain.model.VisualizationProduct;importcom.snw.supplyChain.service.IVisualizationService;importnet.sf.json.JSONObject;importorg.apache.commons.lang3.StringUtils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.socket.CloseStatus;importorg.springframework.web.socket.TextMessage;importorg.springframework.web.socket.WebSocketSession;importorg.springframework.web.socket.handler.TextWebSocketHandler;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;public class VisualizationWebSocketHandler extendsTextWebSocketHandler {private static final Map sessions = new HashMap();private static final Map threads = new HashMap();private Thread polingVisualization = null;//用户标识
private static final String CLIENT_ID = "sessionId";
@AutowiredprivateIVisualizationService visualizationService;
@Overridepublic void afterConnectionEstablished(WebSocketSession session) throwsException {
System.out.println("afterConnectionEstablished: \n"+session.getId());
Object sessionType= session.getAttributes().get("mall");if(sessionType != null && "mall".equals(sessionType)){
sessions.put(CLIENT_ID,session);
sessions.put(session.getId(),session);
}super.afterConnectionEstablished(session);
}
@Overridepublic voidafterConnectionClosed(WebSocketSession session, CloseStatus status) {
Thread thread=threads.get(session.getId());if(thread != null){
thread.interrupt();try{
thread.join();
threads.remove(session.getId());
}catch(InterruptedException e) {
e.printStackTrace();
}
}
sessions.remove(session.getId());
sessions.remove(CLIENT_ID);
polingVisualization= null;try{super.afterConnectionClosed(session, status);
}catch(Exception e) {
}
}//这里是处理前端发送的消息以及返回给前端的数据//可以从session里面获取attributes,
@Overrideprotected voidhandleTextMessage(WebSocketSession session,
TextMessage message)throwsException {super.handleTextMessage(session, message);
Thread thread=threads.get(session.getId());if(thread == null){
System.out.println("handleTextMessage: \n"+session.getId());
WebSocketSession sessi=sessions.get(session.getId());if(sessi == null){
sessions.put(session.getId(),session);
}else{
session=sessi;
}final WebSocketSession localSession =session;final TextMessage localMessage =message;
String payload=message.getPayload();if(StringUtils.isNotBlank(payload)){
String[] split= payload.split("_");if(StringUtils.isNotBlank(split[2])){if("mall".equals(split[1])){final int universalid = Integer.parseInt(split[2]);//这里的Thread可以用java.util.concurrent代替
Thread polingVisualization = new Thread(newRunnable() {public voidrun() {while(!Thread.currentThread().isInterrupted()){try{
polingVisualization(localSession, localMessage, universalid);try{
Thread.sleep(180000);//300000
} catch(InterruptedException e) {
e.printStackTrace();
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
});
polingVisualization.start();
threads.put(sessi.getId(),polingVisualization);
}
}
}
}
}privateVisualizationProduct polingVisualization(WebSocketSession session,
TextMessage message,Integer universalid)throwsIOException {
VisualizationProduct visualizationProduct=visualizationService.findInquiryPriceOrderVisualization(universalid);
Map dataMap = new HashMap();
dataMap.put("status","1");
dataMap.put("visualizationProduct", visualizationProduct);
String dataStr=JSONObject.fromObject(dataMap).toString();
TextMessage returnMessage= newTextMessage(dataStr);
session.sendMessage(returnMessage);returnvisualizationProduct;
}/*** 给正在发布的商品发送新数据
*@paramuniversalid 发布会ID
*@paramsessionId*/
public voidsendNewProductDatas(Integer universalid, String sessionId){if(universalid != null){
Set keys =sessions.keySet();for(String key : keys) {
WebSocketSession webSocketSession=sessions.get(key);if(webSocketSession != null &&webSocketSession.isOpen()){
VisualizationProduct visualizationProduct=visualizationService.findInquiryPriceOrderVisualization(universalid);
Map dataMap = new HashMap();
dataMap.put("status","1");
dataMap.put("visualizationProduct", visualizationProduct);
String dataStr=JSONObject.fromObject(dataMap).toString();
System.out.println(dataStr);
TextMessage returnMessage= newTextMessage(dataStr);try{
webSocketSession.sendMessage(returnMessage);
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)