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

    }

    }

  • 相关阅读:
    vb代码控制 Excel锁定单元格
    SendMessage
    vb 中Treeview控件的一些问题!
    NGWS runtime C# 开始学习 第一天 (2006.6.7)
    DTS Transform Data Task的使用
    GetTickCount
    ASP.NET 2.0 中Login控件的使用
    core dump解析(2)
    tcp滑动窗口机制
    linux 查看文件夹大小 du命令
  • 原文地址:https://www.cnblogs.com/wblade/p/8597041.html
Copyright © 2011-2022 走看看