refactor(WebSocket): migrate from SSE to WebSocket for real-time messaging

- Replaced SSEClient with WSClient for handling real-time messaging.
- Updated ProcessMessageUseCase to initialize WebSocket listeners.
- Refactored messageService to prioritize WebSocket for sending messages, with fallback to HTTP.
- Removed sseService and adjusted imports across the application to utilize wsService.
- Enhanced message handling and connection management for improved performance and reliability.
This commit is contained in:
lafay
2026-03-26 22:04:46 +08:00
parent 4b89b50006
commit ba99900624
16 changed files with 986 additions and 659 deletions

View File

@@ -5,7 +5,7 @@
*/
import { messageRepository } from '../../data/repositories/MessageRepository';
import { sseClient, SSEEventType } from '../../data/datasources/SSEClient';
import { wsClient, WSEventType } from '../../data/datasources/WSClient';
import {
Message,
Conversation,
@@ -62,7 +62,7 @@ class ProcessMessageUseCase {
*/
initialize(currentUserId: string | null): void {
this.currentUserId = currentUserId;
this.setupSSEListeners();
this.setupWSListeners();
}
/**
@@ -81,49 +81,49 @@ class ProcessMessageUseCase {
/**
* 设置SSE监听器
*/
private setupSSEListeners(): void {
private setupWSListeners(): void {
// 监听私聊消息
const unsubChat = sseClient.on('chat', (message) => {
const unsubChat = wsClient.on('chat', (message) => {
this.handleNewMessage(message);
});
// 监听群聊消息
const unsubGroupMessage = sseClient.on('group_message', (message) => {
const unsubGroupMessage = wsClient.on('group_message', (message) => {
this.handleNewMessage(message);
});
// 监听私聊已读回执
const unsubRead = sseClient.on('read', (message) => {
const unsubRead = wsClient.on('read', (message) => {
this.handleReadReceipt(message);
});
// 监听群聊已读回执
const unsubGroupRead = sseClient.on('group_read', (message) => {
const unsubGroupRead = wsClient.on('group_read', (message) => {
this.handleGroupReadReceipt(message);
});
// 监听私聊消息撤回
const unsubRecall = sseClient.on('recall', (message) => {
const unsubRecall = wsClient.on('recall', (message) => {
this.handleRecallMessage(message);
});
// 监听群聊消息撤回
const unsubGroupRecall = sseClient.on('group_recall', (message) => {
const unsubGroupRecall = wsClient.on('group_recall', (message) => {
this.handleGroupRecallMessage(message);
});
// 监听群聊输入状态
const unsubGroupTyping = sseClient.on('group_typing', (message) => {
const unsubGroupTyping = wsClient.on('group_typing', (message) => {
this.handleGroupTyping(message);
});
// 监听群通知
const unsubGroupNotice = sseClient.on('group_notice', (message) => {
const unsubGroupNotice = wsClient.on('group_notice', (message) => {
this.handleGroupNotice(message);
});
// 监听连接状态
const unsubConnected = sseClient.on('connected', () => {
const unsubConnected = wsClient.on('connected', () => {
this.notifySubscribers({
type: 'connection_changed',
payload: { connected: true },
@@ -131,7 +131,7 @@ class ProcessMessageUseCase {
});
});
const unsubDisconnected = sseClient.on('disconnected', () => {
const unsubDisconnected = wsClient.on('disconnected', () => {
this.notifySubscribers({
type: 'connection_changed',
payload: { connected: false },