123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- //package com.ozs.websocket;
- //
- //import lombok.extern.slf4j.Slf4j;
- //import org.springframework.stereotype.Component;
- //
- //import javax.websocket.*;
- //import javax.websocket.server.PathParam;
- //import javax.websocket.server.ServerEndpoint;
- //import java.util.HashMap;
- //import java.util.List;
- //import java.util.Map;
- //import java.util.concurrent.ConcurrentHashMap;
- //import java.util.concurrent.CopyOnWriteArraySet;
- //
- ///**
- // * @Author : sunhh
- // * @create 2023/3/7 16:15
- // */
- //@Slf4j
- //@Component
- //@ServerEndpoint("/websocket/{userId}") // 接口路径 ws://localhost:8087/webSocket/userId;
- //public class WebSocketServer {
- //
- // //与某个客户端的连接会话,需要通过它来给客户端发送数据
- // private Session session;
- // /**
- // * 用户ID
- // */
- // private String userId;
- //
- // //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
- // //虽然@Component默认是单例模式的,但springboot还是会为每个websocket连接初始化一个bean,所以可以用一个静态set保存起来。
- // // 注:底下WebSocket是当前类名
- // private static CopyOnWriteArraySet<WebSocketServer> webSockets =new CopyOnWriteArraySet<>();
- // // 用来存在线连接用户信息
- // private static ConcurrentHashMap<String,Session> sessionPool = new ConcurrentHashMap<String,Session>();
- //
- // /**
- // * 链接成功调用的方法
- // */
- // @OnOpen
- // public void onOpen(Session session, @PathParam(value="userId")String userId) {
- // try {
- // this.session = session;
- // this.userId = userId;
- // webSockets.add(this);
- // sessionPool.put(userId, session);
- // log.info("【websocket消息】有新的连接,总数为:"+webSockets.size());
- // } catch (Exception e) {
- // }
- // }
- //
- // /**
- // * 链接关闭调用的方法
- // */
- // @OnClose
- // public void onClose() {
- // try {
- // webSockets.remove(this);
- // sessionPool.remove(this.userId);
- // log.info("【websocket消息】连接断开,总数为:"+webSockets.size());
- // } catch (Exception e) {
- // }
- // }
- // /**
- // * 收到客户端消息后调用的方法
- // *
- // * @param message
- // */
- // @OnMessage
- // public void onMessage(String message) {
- // log.info("【websocket消息】收到客户端消息:"+message);
- // }
- //
- // /** 发送错误时的处理
- // * @param session
- // * @param error
- // */
- // @OnError
- // public void onError(Session session, Throwable error) {
- //
- // log.error("用户错误,原因:"+error.getMessage());
- // error.printStackTrace();
- // }
- //
- //
- // // 此为广播消息
- // public void sendAllMessage(String message) {
- // log.info("【websocket消息】广播消息:"+message);
- // for(WebSocketServer webSocket : webSockets) {
- // try {
- // if(webSocket.session.isOpen()) {
- // webSocket.session.getAsyncRemote().sendText(message);
- // }
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // }
- //
- // // 此为单点消息
- // public void sendOneMessage(String userId, String message) {
- // Session session = sessionPool.get(userId);
- // if (session != null&&session.isOpen()) {
- // try {
- // log.info("【websocket消息】 单点消息:"+message);
- // session.getAsyncRemote().sendText(message);
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // }
- //
- // // 此为单点消息(多人)
- // public void sendMoreMessage(List<String> userIds, String message) {
- // for(String userId:userIds) {
- // Session session = sessionPool.get(userId);
- // if (session != null&&session.isOpen()) {
- // try {
- // log.info("【websocket消息】 单点消息:"+message);
- // session.getAsyncRemote().sendText(message);
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // }
- //
- // }
- //}
|