制作背景为老师和学生交流,但是交流的范围为班级的某一个任课老师和本班的学生,执行的操作是老师向学生询问是否听懂了,学生进行回复。这是一个项目中的一部分,主要用于线上教学时的学生回应。
WebSocketRoom配置类
@Slf4j
public class WebSocketRoom {
public static Map<String, ConcurrentHashMap<String, Session>> rooms = new ConcurrentHashMap();
public static void close(String roomId,String sessionId) throws IOException {//sessionId就是account
log.info("{}从{}房间断开了链接",sessionId,roomId);
Map<String, Session> sessions=rooms.get(roomId);//获取当前房间的信息
for (String account : sessions.keySet()) {
Session session = sessions.get(account);//获取当前hashmap中的value值
if (session.getId().equals(sessionId)) {
sessions.remove(account);//如果当前池中有key对应的value值,则进行清除操作
break;
}
}
}
public static void sendMessage(String roomId,String account, String message) {//一对一发送,用于学生回复老师是否听懂
log.info("在房间{}中,{}发送消息{}",roomId,account,message);
rooms.get(roomId).get(roomId).getAsyncRemote().sendText(message);//获取需要发送的用户,并发送信息
}
public static void sendMessage(String roomId,String message) {//对当前所有的链接进行发送,用于老师向学生提问是否听懂
for (String sessionId : rooms.get