云南网站建设哪家公司好,网站域名后缀有哪些,南宁市西乡塘区建设局网站,ip怎么做网站websocket连接
此篇websocket是最简单的运用#xff0c;虽然简单#xff0c;但也是需要注意 还有其它方法货协议#xff0c;比如socket.js等。今天时间不充裕虽然例子都写好了#xff0c;下次更新websocket所有相关的东西。提前想了解的#xff0c;可私信
前端 var webs…websocket连接
此篇websocket是最简单的运用虽然简单但也是需要注意 还有其它方法货协议比如socket.js等。今天时间不充裕虽然例子都写好了下次更新websocket所有相关的东西。提前想了解的可私信
前端 var websocket null;var timeConnect 0;//连接function webSocketConnect() {//判断当前浏览器是否支持WebSocketif (WebSocket in window) {websocket new WebSocket(ws://document.location.host/${pageContext.request.contextPath}/websocket/test);} else {console.error(不支持WebSocket);}//连接发生错误的回调方法websocket.onerror function (e) {console.error(WebSocket连接发生错误);reConnect();};//连接成功建立的回调方法websocket.onopen function (event) {console.log(连接成功);}//接收到消息的回调方法websocket.onmessage function (event) {var ceval(( event.data ));test(1,浙A01545);}//连接关闭的回调方法websocket.onclose function (event) {console.log(Socket连接断开);reConnect();}}//重连function reConnect() {// lockReconnect加锁防止onclose、onerror两次重连timeConnect;console.log(第 timeConnect 次重连);// 进行重连setTimeout(function () {webSocketConnect();}, 2000);}window.onbeforeunload function() { disWebConnect();}//断开连接function disWebConnect() {if (websocket ! null) {websocket.close();}} //心跳 * 回应setInterval(function () {websocket.send();}, 1000 * 100)后端
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;Controller
RequestMapping({ /test/ })
ServerEndpoint(/websocket/test)//
public class WebSocketDataRelay {static Logger logger LogManager.getLogger(WebSocketDataRelay.class);public static String receiveData null;
// HttpSession sessionnull;RequestMapping({ vehicleInfo })ResponseBodypublic void vehicleInfo(HttpServletRequest request, HttpServletResponse response) throws Exception {response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS);response.setHeader(Access-Control-Allow-Headers, Content-Type, Authorization, Accept,X-Requested-With);
// session.setAttribute(receiveData, null);
// session.getAttribute(receiveData);try {JSONArray parameterDate getParameterDate(request);logger.info(【传值通道打通】parameterDate); if (parameterDate ! null) {Date date new Date();int lenparameterDate.size()-1;Object object parameterDate.get(len);Long ccLong.valueOf(object.toString());long reverse Long.reverse(cc) - date.getDay()*37712138;if(reverse date.getTime() reverse1000*60*2 date.getTime()) {receiveData parameterDate.toString();//System.err.println(【传值连接】 值为 parameterDate.toString());sendMessage(parameterDate.toString());logger.info(【传值连接】 值为parameterDate.toString()); }}else {logger.info(【传值为空】); }} catch (IOException e) {e.printStackTrace();logger.info(【传值连接错误】e); }}public static JSONArray getParameterDate(HttpServletRequest request) throws IOException {StringBuffer buffer new StringBuffer();BufferedReader reader null;JSONArray jsonObject new JSONArray();try {reader new BufferedReader(new InputStreamReader(request.getInputStream()));String line null;while ((line reader.readLine()) ! null) {buffer.append(line);}jsonObject JSON.parseArray(buffer.toString());} catch (IOException e) {e.printStackTrace();throw new IOException(数据读取异常);} finally {if (reader ! null) {reader.close();}}return jsonObject;}public static ConcurrentHashMapString, Session webSocketData new ConcurrentHashMap();OnOpenpublic void onOpen(Session session, PathParam(deviceId) String deviceId) {//System.err.println(【建立连接】 用户设备号为 deviceId);webSocketData.put(deviceId, session);logger.info(用户设备号deviceId); }OnClosepublic void onClose(Session session) {String deviceId null;for (EntryString, Session entry : webSocketData.entrySet()) {if (session entry.getValue()) {deviceId (String) entry.getKey();webSocketData.remove(deviceId);//System.err.println(【连接断开】 用户设备号为 deviceId);logger.info(【连接断开】 用户设备号为deviceId); }}}OnMessagepublic void onMessage(String message) {sendMessage(receiveData);}public void sendMessage(String message) {if ((message ! null) (message ! )) {for (Session session1 : webSocketData.values()) {try {session1.getBasicRemote().sendText(message);logger.info(【信息下发】:发送成功); } catch (Exception e) {e.getMessage();}}}}
}\