24: socket.io chat

This commit is contained in:
Phuoc Nguyen
2025-05-23 15:48:33 +07:00
parent d03e502f2f
commit 44cd4f2911
5 changed files with 483 additions and 4 deletions

44
src/chat/chat.gateway.ts Normal file
View File

@@ -0,0 +1,44 @@
import {
ConnectedSocket,
MessageBody, OnGatewayConnection,
SubscribeMessage,
WebSocketGateway,
WebSocketServer,
} from '@nestjs/websockets';
import {Server, Socket} from 'socket.io';
import {ChatService} from "./chat.service";
@WebSocketGateway()
export class ChatGateway implements OnGatewayConnection {
@WebSocketServer()
server: Server;
constructor(
private readonly chatService: ChatService
) {
}
async handleConnection(socket: Socket) {
await this.chatService.getUserFromSocket(socket);
}
@SubscribeMessage('send_message')
async listenForMessages(@MessageBody() content: string, @ConnectedSocket() socket: Socket,) {
const author = await this.chatService.getUserFromSocket(socket);
const message = await this.chatService.saveMessage(content, author);
this.server.sockets.emit('receive_message', message);
return message;
}
@SubscribeMessage('request_all_messages')
async requestAllMessages(
@ConnectedSocket() socket: Socket,
) {
await this.chatService.getUserFromSocket(socket);
const messages = await this.chatService.getAllMessages();
socket.emit('send_all_messages', messages);
}
}