问题遇到的现象和发生背景
公司要求将实时数据通过websocket传递到前端进行渲染,本人浏览了很长时间博客,发现并不理想
1.一个html页面怎么连接到java服务的,是通过java服务的什么注解
2.如果一个html页面连接到服务器,我怎么才能将这个html页面与我准备的数据结构对应上
3.定时任务我想让他在连接建立之后触发,断开连接后停止
4.定时任务生成的数据怎么才能定点发送给某个html页面
问题相关代码,请勿粘贴截图
@ServerEndpoint(value = "/socket/one")
@Component
@Slf4j
public class WebSocket {
private static Map<String, Session> clients = new ConcurrentHashMap<>();
private static List<VideoData> data = new ArrayList<>();
private static List<List<VideoData>> datum = new ArrayList<>();
private Session session;
private static int onlineCount = 0;
@Autowired
private SafetyService safetyService;
@OnOpen
public void onOpen(Session session) throws InterruptedException {
System.out.println("open connection:" + session.getId());
this.session = session;
if(clients.containsKey(session.getId())){
clients.remove(session.getId());
}else{
//在线数加1
addOnlineCount();
}
//加入set中
clients.put(session.getId(), session);
try {
sendMessage("连接成功",session);
} catch (Exception e) {
log.error("用户:"+session.getId()+",网络异常!!!!!!");
}
}
@OnClose
public void onClose(Session session) {
System.out.println("close connection:" + session.getId());
if(clients.containsKey(session.getId())){
clients.remove(session.getId());
//从set中删除
subOnlineCount();
}
clients.remove(session.getId());
}
// message为摄像头编号
@OnMessage
public void onMessage(String message, Session session) throws InterruptedException {
System.out.println(session.getId() + ": " + message);
if(StringUtils.isBlank(message)){
sendMessage("摄像头为空",session);
}
while (true) {
if(!session.isOpen()) {
break;
}
Thread.sleep(5000);
}
}
@OnError
public void onError(Session session, Throwable error) {
error.printStackTrace();
}
public void sendMessage(String message,Session session) {
try {
session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocket.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocket.onlineCount--;
}
}
运行结果及报错内容
我的解答思路和尝试过的方法
我尝试将定时任务写入websocket,但是控制不了触发条件
我想要达到的结果
解决上面的问题