**
后端代码
**`package gds.application.gds.webSorce;
import gds.application.gds.httpclient.RemoteAccess;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
-
@ClassName SystemWebSocketHandler
-
@Description:
-
@Author: LWJ
-
@CreateDate: 2021/6/10 14:20
/
@ServerEndpoint("/websocket")
public class SystemWebSocketHandler {
private final static Logger log = LoggerFactory.getLogger(SystemWebSocketHandler.class);
/*- 内容集合
*/
public static Map contentMap=new HashMap<>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
/**
- 连接建立成功调用的方法
- @param session
-
可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
@OnOpen
public void onOpen(Session session) {
this.session = session;
Map<String, List> requestParameterMap = session.getRequestParameterMap();
//关闭时从链接获取content的ID
List contentids = requestParameterMap.get(“content_id”);
if (contentids!=null&&contentids.size()>0) {
String contentId = contentids.get(0);
if (ObjectUtils.isEmpty(contentMap.get(contentId))){
contentMap.put(contentId,session);
}
}
log.info(“有新连接加入!当前在线人数为” + getOnlineCount());
}/**
- 连接关闭调用的方法
*/
@OnClose
public void onClose(Session session) {
Map<String, List> requestParameterMap = session.getRequestParameterMap();
//关闭时从链接获取content的ID
List contentids = requestParameterMap.get(“content_id”);
if (contentids!=null&&contentids.size()>0){
String contentId=contentids.get(0);
contentMap.remove(contentId);
}
log.info(“有一连接关闭!当前在线人数为” + getOnlineCount());
}
public static synchronized int getOnlineCount() {
return contentMap.size();
} - 内容集合
}
`
前端代码
content_id 做唯一标识
var websocket = null;
//判断当前浏览器是否支持WebSocket
if (‘WebSocket’ in window) {
websocket = new WebSocket(“ws://vr.epgc.mtn:8080/websocket?content_id=${accountID}”);
}
else {
alert(‘当前浏览器 Not support websocket’)
}
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
window.onbeforeunload = function () {
closeWebSocket();
}
//关闭WebSocket连接
function closeWebSocket() {
websocket.close();
}