简单实现WebSocket,Springboot聊天室,源代码
以下是一个简单的Spring Boot聊天室示例,使用WebSocket实现:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@Controller
@RequestMapping("/chat")
public class ChatController {
@GetMapping
public ModelAndView chat() {
return new ModelAndView("chat");
}
}
@ServerEndpoint("/ws/chat")
public class ChatEndpoint {
private static final Set<ChatEndpoint> sessions = Collections.synchronizedSet(new HashSet<>());
private Session session;
@OnOpen
public void onOpen(Session session) {
this.session = session;
sessions.add(this);
broadcast("New user joined the chat room.");
}
@OnClose
public void onClose() {
sessions.remove(this);
broadcast("A user left the chat room.");
}
@OnMessage
public void onMessage(String message) {
broadcast(message);
}
@OnError
public void onError(Throwable error) {
error.printStackTrace();
}
public void broadcast(String message) {
for (ChatEndpoint client : sessions) {
try {
synchronized (client) {
client.session.getBasicRemote().sendText(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在这个例子中,ChatController
是一个普通的Spring MVC控制器,负责处理HTTP请求并返回聊天室的页面。ChatEndpoint
使用@ServerEndpoint
注解来指定WebSocket的端点,并处理客户端的连接、关闭、消息接收和错误。
这个简单的聊天室没有数据持久化,也没有认证或授权,只是为了演示WebSocket的基本使用。在生产环境中,你需要添加安全控制、用户认证、过滤不合法的消息、处理并发等功能。
评论已关闭