问答

使用websocket时,希望在OnOpen时在roomList里添加新的连接,存

作者:admin 2021-09-08 我要评论

使用websocket时,希望在OnOpen时在roomList里添加新的连接,存在static里面,怎么实现? public class Socket { //静态变量,用来记录当前在线连接数。应该把它...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

使用websocket时,希望在OnOpen时在roomList里添加新的连接,存在static里面,怎么实现?

public class Socket {
    //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
    private static int onlineCount = 0;
    /*websocket 客户端会话 通过Session 向客户端发送数据*/
    private Session session;
    /*线程安全set 存放每个客户端处理消息的对象*/
    private static CopyOnWriteArraySet<Socket> webSocketSet = new CopyOnWriteArraySet();
    /*websocket 连接建立成功后进行调用*/


    private static Map<String, String> userList = new HashMap<String, String>();

    private static SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//创建时间格式对象

    /**
     * 功能:创建一个房间的集合,用来存放房间
     * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
     * 若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
     */
    private static ConcurrentHashMap<String, ConcurrentHashMap<String, Socket>> roomList = new  ConcurrentHashMap<String,ConcurrentHashMap<String, Socket>>();

    //重新加入房间的标示;
    private int rejoin = 0;
    static {
        roomList.put("room1", new ConcurrentHashMap<String, Socket>());
        roomList.put("room2", new ConcurrentHashMap<String, Socket>());
        roomList.put("wuxian20200424", new ConcurrentHashMap<String, Socket>());
    }
    @OnOpen
    public void onOpen(@PathParam(value = "info") String param, Session session) {
    
    }
###

websocket可以用连接的session传输数据,不需要用socket

roomId和userId,需要你自己根据逻辑获取,是不是放在param里的?

@OnOpen
public void onOpen(@PathParam(value = "info") String param, Session session) {
    String roomId = ...;
    String userId = ...;
    roomList.get(roomId).put(userId, session); 
}

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用websocket时,希望在OnOpen时在roo

    使用websocket时,希望在OnOpen时在roo

  • 帮忙研究下这个网页如何实现inline vid

    帮忙研究下这个网页如何实现inline vid

  • antd 的select多选上面加 查看

    antd 的select多选上面加 查看

  • 只有下拉框和输入框怎么向父组件传值,

    只有下拉框和输入框怎么向父组件传值,

腾讯云代理商
海外云服务器