• web socket


    @ServerEndpoint("/my-websocket")

    @Component

    public class MyWebSocket {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    private static int onlineCount = 0;

    private static CopyOnWriteArraySet<MyWebSocket> webSocketSet = new CopyOnWriteArraySet<>();

    private Session session;

    public String user;

    @OnOpen

    public void onOpen(Session session) throws IOException{

    this.session = session;

    System.out.println(session.getQueryString());

    user=session.getRequestParameterMap().get("token").toString();

    webSocketSet.add(this);

    incrOnlineCount();

    for(MyWebSocket item : webSocketSet){

    if(!item.equals(this)) { //send to others only.

    item.sendMessage("someone just joined in.");

    }

    }

    logger.info("new connection...current online count: {}", getOnlineCount());

    }

    @OnClose

    public void onClose() throws IOException{

    webSocketSet.remove(this);

    decOnlineCount();

    for(MyWebSocket item : webSocketSet){

    item.sendMessage("someone just closed a connection.");

    }

    logger.info("one connection closed...current online count: {}", getOnlineCount());

    }

    @OnMessage

    public void onMessage(String message, Session session) throws IOException {

    logger.info("message received: {}", message);

    // broadcast received message

    for(MyWebSocket item : webSocketSet){

    item.sendMessage(message);

    if(item.user.equals("[access_token]")){

    System.out.println("end it ");

    // item.session.close();

    }

    }

    }

    public void sendMessage(String message) throws IOException {

    this.session.getBasicRemote().sendText(message);

    }

    public static synchronized int getOnlineCount(){

    return MyWebSocket.onlineCount;

    }

    public static synchronized void incrOnlineCount(){

    MyWebSocket.onlineCount++;

    }

    public static synchronized void decOnlineCount(){

    MyWebSocket.onlineCount--;

    }

    }

  • 相关阅读:
    VS批处理命令使用
    python实现域账号登陆
    Sql Server 优化技巧
    Windows 2012 R2 安装net4.6.1
    Resharper报“Possible multiple enumeration of IEnumerable”
    京东模拟点击
    使用常规方法爬取猫眼电影
    关于断点调试
    看网络开发实战书笔记
    scrapy的request的meta参数是什么意思?
  • 原文地址:https://www.cnblogs.com/wblade/p/8597041.html
Copyright © 2020-2023  润新知