package com.zzz.webchat.service;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* @description
* @author joinus
* @version 1.0
* @date 2024-03-15 13:07
*/
@ServerEndpoint("/ws")
@Component
public class WebSocketServer {
private static final Map<String, Session> sessionMap = new HashMap<>();
@OnOpen
public void onOpen(Session session){
sessionMap.put(session.getId(), session);
System.out.println("有新连接加入!");
}
@OnClose
public void onClose(Session session){
sessionMap.remove(session.getId()); //从map中删除
System.out.println("有一连接关闭!");
}
/**
* 收到客户端消息后调用的方法
* @param message 客户端发送过来的消息
* @param session 可选的参数
*/
@OnMessage
public void onMessage(Session session, String message) throws Exception {
System.out.println("来自客户端的消息:" + message);
//群发消息
sessionMap.forEach((k,v) -> {
try {
sendMessage(v, message);
} catch (IOException e) {
e.printStackTrace();
}
});
}
public void sendMessage(Session session, String message) throws IOException {
session.getBasicRemote().sendText(message);
}
/**
* 发生错误时调用
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error){
System.out.println("发生错误");
error.printStackTrace();
}
}
网页聊天室demo(极简)
需积分: 0 92 浏览量
2024-03-27
10:11:19
上传
评论
收藏 8KB ZIP 举报
Forever_rrr
- 粉丝: 23
- 资源: 14