ccx1 / ChatRoomGroup

基于socket.手写一个简单的聊天室,内置小黑屋以及android版,还有web版,以及后端处理模式

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

websocket

点击访问聊天室

主要处理核心是后端

聊天室**

需要一个长久的Map来记录当前Session所在的位置,根据java特性,需要一个静态的,这样是随着类的加载而加载.并且需要一个set来存储不重复的session

一个session代表一个用户

map所在的key代表一个房间,set代表这个房间内所存在的人数

Set<Session> sessions = stringSetMap.get(user);
    if (sessions == null) {
        sessions = new HashSet<>();
    }
    this.session = session;
    this.user = user;
    sessions.add(session);
    stringSetMap.put(user, sessions);
    stringSetMap.put("blackroom", stringSetMap.get("blackroom") == null ? new HashSet<>() : stringSetMap.get("blackroom"));

并且创建小黑屋,如果黑屋存在,则不创建,如果不存在,则重新创建

核心**就是将所有的session统一管理起来,session的id则为每个用户的唯一标识

发送消息给此房间内的所有人

Set<Session> sessions = stringSetMap.get(user);
    for (Session client : sessions) {
        synchronized (ChatServer.class) {
            client.getAsyncRemote().sendText(text);
        }
    }

About

基于socket.手写一个简单的聊天室,内置小黑屋以及android版,还有web版,以及后端处理模式


Languages

Language:Java 100.0%