Replace websocket flow with SSE support in backend.

Update handlers, services, router, and data conversion logic to support server-sent events and related message pipeline changes.

Made-with: Cursor
This commit is contained in:
2026-03-10 12:58:23 +08:00
parent 4c0177149a
commit 86ef150fec
19 changed files with 689 additions and 1719 deletions

View File

@@ -17,7 +17,6 @@ type Router struct {
messageHandler *handler.MessageHandler
notificationHandler *handler.NotificationHandler
uploadHandler *handler.UploadHandler
wsHandler *handler.WebSocketHandler
pushHandler *handler.PushHandler
systemMessageHandler *handler.SystemMessageHandler
groupHandler *handler.GroupHandler
@@ -36,7 +35,6 @@ func New(
notificationHandler *handler.NotificationHandler,
uploadHandler *handler.UploadHandler,
jwtService *service.JWTService,
wsHandler *handler.WebSocketHandler,
pushHandler *handler.PushHandler,
systemMessageHandler *handler.SystemMessageHandler,
groupHandler *handler.GroupHandler,
@@ -55,7 +53,6 @@ func New(
messageHandler: messageHandler,
notificationHandler: notificationHandler,
uploadHandler: uploadHandler,
wsHandler: wsHandler,
pushHandler: pushHandler,
systemMessageHandler: systemMessageHandler,
groupHandler: groupHandler,
@@ -79,11 +76,6 @@ func (r *Router) setupRoutes() {
c.JSON(200, gin.H{"status": "ok"})
})
// WebSocket 路由
if r.wsHandler != nil {
r.engine.GET("/ws", r.wsHandler.HandleWebSocket)
}
// API v1
v1 := r.engine.Group("/api/v1")
{
@@ -210,10 +202,18 @@ func (r *Router) setupRoutes() {
conversations.POST("/set_pinned", r.messageHandler.HandleSetConversationPinned)
// 获取未读消息总数
conversations.GET("/unread/count", r.messageHandler.GetUnreadCount)
// 上报输入状态
conversations.POST("/typing", r.messageHandler.HandleTyping)
// 仅自己删除会话
conversations.DELETE("/:id/self", r.messageHandler.HandleDeleteConversationForSelf)
}
realtime := v1.Group("/realtime")
realtime.Use(authMiddleware)
{
realtime.GET("/sse", r.messageHandler.HandleSSE)
}
// 消息操作路由
messages := v1.Group("/messages")
messages.Use(authMiddleware)