store sockets in a map so controller can access them

This commit is contained in:
simplonco
2023-01-10 16:45:16 +01:00
parent 239b16bfa8
commit 8f07be709e
5 changed files with 25 additions and 18 deletions

View File

@@ -8,21 +8,22 @@ import { createRoomDto } from './dto/createRoom.dto';
import { joinRoomDto } from './dto/joinRoom.dto'; import { joinRoomDto } from './dto/joinRoom.dto';
import { setCurrentRoomDto } from './dto/setCurrentRoom.dto'; import { setCurrentRoomDto } from './dto/setCurrentRoom.dto';
import { ChatGateway } from './chat.gateway'; import { ChatGateway } from './chat.gateway';
import { socketDto } from './dto/socket.dto';
@Controller('chat') @Controller('chat')
export class ChatController { export class ChatController {
constructor(
private chatService: ChatService,
private chatGateway: ChatGateway,
) {}
private allowed_chars = '-#!?_'; private allowed_chars = '-#!?_';
private escape_chars(str) private escape_chars(str)
{ {
return str.split("").join("\\"); return str.split("").join("\\");
} }
constructor(
private chatService: ChatService,
private chatGateway: ChatGateway,
) {}
@UseGuards(AuthenticateGuard) @UseGuards(AuthenticateGuard)
@UseGuards(TwoFactorGuard) @UseGuards(TwoFactorGuard)
@@ -94,8 +95,11 @@ export class ChatController {
async joinRoom(@Body() joinRoomDto: joinRoomDto, @Req() req, @Res() res): Promise<object> async joinRoom(@Body() joinRoomDto: joinRoomDto, @Req() req, @Res() res): Promise<object>
{ {
console.log("- in joinRoom controller"); console.log("- in joinRoom controller");
console.log("-- room_name", joinRoomDto.room_name);
const response = await this.chatService.addUserToRoom(req.user.username, joinRoomDto.room_name); const response = await this.chatService.addUserToRoom(req.user.username, joinRoomDto.room_name);
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
await this.chatService.socketJoinRoom(socket, joinRoomDto.room_name);
console.log("- out joinRoom controller"); console.log("- out joinRoom controller");
return res.status(HttpStatus.OK).json({ room_name: joinRoomDto.room_name, message: response }); return res.status(HttpStatus.OK).json({ room_name: joinRoomDto.room_name, message: response });
} }
@@ -107,6 +111,10 @@ export class ChatController {
{ {
console.log("- in changeRoom controller"); console.log("- in changeRoom controller");
const response = await this.chatService.setCurrentRoom(req.user.username, joinRoomDto.room_name); const response = await this.chatService.setCurrentRoom(req.user.username, joinRoomDto.room_name);
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
await this.chatService.socketChangeRoom(socket, joinRoomDto.room_name);
console.log("- out changeRoom controller"); console.log("- out changeRoom controller");
return res.status(HttpStatus.OK).json({ room_name: joinRoomDto.room_name, message: response }); return res.status(HttpStatus.OK).json({ room_name: joinRoomDto.room_name, message: response });
} }

View File

@@ -8,7 +8,7 @@ import { socketDto } from './dto/socket.dto';
}) })
export class ChatGateway export class ChatGateway
implements OnGatewayConnection, OnGatewayDisconnect implements OnGatewayConnection, OnGatewayDisconnect
{ {
constructor constructor
( (
@@ -16,15 +16,19 @@ export class ChatGateway
private chatService: ChatService, private chatService: ChatService,
) {} ) {}
sockets = new Map<string, socketDto>();
@WebSocketServer() @WebSocketServer()
server; server;
async handleConnection(client: socketDto) { async handleConnection(socket: socketDto) {
console.log('- Client connected :', client.id, client.handshake.query.username); console.log('- socket connected :', socket.id, socket.handshake.query.username);
client.username = client.handshake.query.username.toString(); socket.username = socket.handshake.query.username.toString();
this.sockets.set(socket.username, socket);
} }
async handleDisconnect(client: socketDto) { async handleDisconnect(socket: socketDto) {
console.log('- Client disconnected :', client.id, client.username); this.sockets.delete(socket.username);
console.log('- socket disconnected :', socket.id, socket.username);
} }
@SubscribeMessage('join') @SubscribeMessage('join')

View File

@@ -3901,7 +3901,6 @@ var app = (function () {
}); });
let data = await response.json(); let data = await response.json();
console.log(data.message); console.log(data.message);
socket$1.emit('join', room_name);
} }
async function change_room(room_name) { async function change_room(room_name) {
console.log("in change_room"); console.log("in change_room");
@@ -3916,7 +3915,6 @@ var app = (function () {
let data = await response.json(); let data = await response.json();
console.log(data.message); console.log(data.message);
await get_room_messages(); await get_room_messages();
socket$1.emit('change', room_name);
current_room_name.set(room_name); current_room_name.set(room_name);
layout.set("room"); layout.set("room");
} }

File diff suppressed because one or more lines are too long

View File

@@ -60,8 +60,6 @@ export async function join_room(room_name)
}); });
let data = await response.json(); let data = await response.json();
console.log(data.message); console.log(data.message);
socket.emit('join', room_name);
} }
export async function change_room(room_name) export async function change_room(room_name)
@@ -80,7 +78,6 @@ export async function change_room(room_name)
console.log(data.message); console.log(data.message);
await get_room_messages(); await get_room_messages();
socket.emit('change', room_name);
current_room_name.set(room_name); current_room_name.set(room_name);
layout.set("room"); layout.set("room");