added socket dto

This commit is contained in:
simplonco
2023-01-10 15:21:18 +01:00
parent 2e67d3ce6f
commit 1594ab6f05
4 changed files with 49 additions and 39 deletions

View File

@@ -12,34 +12,16 @@ import { ChatGateway } from './chat.gateway';
@Controller('chat')
export class ChatController {
private allowed_chars: string;
private allowed_chars = '-#!?_';
private escape_chars(str)
{
return str.split("").join("\\");
}
constructor(
private chatService: ChatService,
private chatGateway: ChatGateway,
)
{
this.allowed_chars = '-#!?_';
/*
let text = "The best things in life are-* free";
function escape_chars(str)
{
return new_str = str.split("").join("\\");
}
let allowed_chars = '#!?\\-_';
let regex_base = `[a-zA-Z0-9\\s${allowed_chars}]`;
let test_regex = new RegExp(`^${regex_base}+$`);
let result = "";
result = escape_chars(allowed_chars);
//if (test_regex.test(text) === false)
// result = text.replace(new RegExp(regex_base, "g"), "");
document.getElementById("demo").innerHTML = "[" + result + "]";
*/
}
) {}
@UseGuards(AuthenticateGuard)
@@ -92,7 +74,8 @@ export class ChatController {
{
console.log("- in createRoom controller");
let regex_base = `[a-zA-Z0-9\\s${this.allowed_chars}]`;
let chars = this.escape_chars(this.allowed_chars);
let regex_base = `[a-zA-Z0-9\\s${chars}]`;
let test_regex = new RegExp(`^${regex_base}+$`);
if (test_regex.test(createRoomDto.room_name) === false)
{
@@ -113,9 +96,6 @@ export class ChatController {
console.log("- in joinRoom controller");
console.log("-- room_name", joinRoomDto.room_name);
const response = await this.chatService.addUserToRoom(req.user.username, joinRoomDto.room_name);
//this.chatGateway.joinRoom(null, joinRoomDto.room_name);
console.log("- out joinRoom controller");
return res.status(HttpStatus.OK).json({ room_name: joinRoomDto.room_name, message: response });
}

View File

@@ -1,7 +1,7 @@
import { WebSocketGateway, SubscribeMessage, WebSocketServer, MessageBody, ConnectedSocket, OnGatewayConnection, OnGatewayDisconnect } from '@nestjs/websockets';
import { UsersService } from 'src/users/users.service';
import { PaginationQueryDto } from 'src/common/dto/pagination-query.dto';
import { ChatService } from './chat.service';
import { socketDto } from './dto/socket.dto';
@WebSocketGateway(5000, {
path: '/chat',
@@ -19,19 +19,16 @@ export class ChatGateway
@WebSocketServer()
server;
// how to guard the handleConnection ?
// https://github.com/nestjs/nest/issues/882
async handleConnection(client) {
async handleConnection(client: socketDto) {
console.log('- Client connected :', client.id, client.handshake.query.username);
client.username = client.handshake.query.username;
client.username = client.handshake.query.username.toString();
}
async handleDisconnect(client) {
async handleDisconnect(client: socketDto) {
console.log('- Client disconnected :', client.id, client.username);
}
@SubscribeMessage('join')
async joinRoom(@ConnectedSocket() socket, @MessageBody() room_name: string): Promise<void>
async joinRoom(@ConnectedSocket() socket: socketDto, @MessageBody() room_name: string): Promise<void>
{
console.log('- in joinRoom gateway');
socket.leave(socket.room);
@@ -45,7 +42,7 @@ export class ChatGateway
}
@SubscribeMessage('change')
async changeRoom(@ConnectedSocket() socket, @MessageBody() room_name: string): Promise<void>
async changeRoom(@ConnectedSocket() socket: socketDto, @MessageBody() room_name: string): Promise<void>
{
console.log('- in changeRoom gateway');
socket.leave(socket.room);
@@ -56,10 +53,9 @@ export class ChatGateway
}
@SubscribeMessage('message')
async handleMessage(@ConnectedSocket() socket, @MessageBody() message: string): Promise<void>
async handleMessage(@ConnectedSocket() socket: socketDto, @MessageBody() message: string): Promise<void>
{
console.log('- in handleMessage gateway');
//let room_name = await this.chatService.getCurrentRoom(socket.username);
socket.to(socket.room).emit('message', socket.username, message);
let room_name = await this.chatService.getCurrentRoomName(socket.username);
await this.chatService.addMessageToRoom(room_name, socket.username, message);

View File

@@ -228,5 +228,26 @@ export class ChatService {
return user;
}
/* GATEWAY EVENTS *****************************************
async handleMessage()
{
console.log("-- in getUserByName service");
// socket.to(socket.room).emit('message', socket.username, message);
// let room_name = await this.chatService.getCurrentRoomName(socket.username);
// await this.chatService.addMessageToRoom(room_name, socket.username, message);
const user = await this.userRepository
.createQueryBuilder('user')
.where('user.username = :name', { name: username })
.getOne();
console.log("-- out getUserByName service");
return user;
}
*/
}

View File

@@ -0,0 +1,13 @@
import { IsBoolean, IsEmpty, IsInt, IsNotEmpty, IsNumber, IsString, IsOptional } from "class-validator";
import { Socket } from 'socket.io';
export class socketDto extends Socket
{
@IsString()
username: string;
@IsString()
room: string;
}