Spaces:
Configuration error
Configuration error
import { io, Socket } from 'socket.io-client'; | |
const SOCKET_URL = import.meta.env.VITE_API_URL || 'http://localhost:5000'; | |
class SocketService { | |
private socket: Socket | null = null; | |
connect(token: string): Socket { | |
if (this.socket?.connected) { | |
return this.socket; | |
} | |
this.socket = io(SOCKET_URL, { | |
autoConnect: false, | |
}); | |
this.socket.connect(); | |
// 连接成功后发送认证信息 | |
this.socket.on('connect', () => { | |
console.log('Socket连接成功'); | |
this.socket?.emit('join', { token }); | |
}); | |
this.socket.on('disconnect', () => { | |
console.log('Socket连接断开'); | |
}); | |
this.socket.on('error', (error) => { | |
console.error('Socket错误:', error); | |
}); | |
return this.socket; | |
} | |
disconnect(): void { | |
if (this.socket) { | |
this.socket.disconnect(); | |
this.socket = null; | |
} | |
} | |
getSocket(): Socket | null { | |
return this.socket; | |
} | |
sendMessage(content: string, room: string = 'general'): void { | |
if (this.socket?.connected) { | |
this.socket.emit('sendMessage', { content, room }); | |
} | |
} | |
onNewMessage(callback: (message: any) => void): void { | |
this.socket?.on('newMessage', callback); | |
} | |
onUserJoined(callback: (user: any) => void): void { | |
this.socket?.on('userJoined', callback); | |
} | |
onUserLeft(callback: (user: any) => void): void { | |
this.socket?.on('userLeft', callback); | |
} | |
onOnlineUsers(callback: (users: any[]) => void): void { | |
this.socket?.on('onlineUsers', callback); | |
} | |
offAllListeners(): void { | |
this.socket?.removeAllListeners(); | |
} | |
} | |
export const socketService = new SocketService(); | |
export default socketService; | |