zoukankan      html  css  js  c++  java
  • 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--;

    }

    }

  • 相关阅读:
    nginx常用模块(三)
    Nmap脚本文件分析(AMQP协议为例)
    Nmap脚本引擎原理
    小型Basic编译器问题
    Nmap原理02
    基于Docker搭建GitLab服务器
    关于Telnet使用
    Linux系统搭建GitLab---阿里云Centos7搭建Gitlab踩坑
    Vi文本编辑器
    Linux 奇技淫巧之常用指令
  • 原文地址:https://www.cnblogs.com/wblade/p/8597041.html
Copyright © 2011-2022 走看看