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--;

    }

    }

  • 相关阅读:
    loj 1251(2-sat + 输出一组可行解)
    hdu 4751(dfs染色)
    hdu 2545(并查集求节点到根节点的距离)
    uva 10972(边双连通分量)
    uva 10246(最短路变形)
    uva 11380(最大流+拆点)
    hdu 4640(状压dp)
    hdu 1430+hdu 3567(预处理)
    python基础知识回顾[1]
    基于websocket搭建简易群聊
  • 原文地址:https://www.cnblogs.com/wblade/p/8597041.html
Copyright © 2011-2022 走看看