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 { setCurrentRoomDto } from './dto/setCurrentRoom.dto';
import { ChatGateway } from './chat.gateway';
import { socketDto } from './dto/socket.dto';
@Controller('chat')
export class ChatController {
constructor(
private chatService: ChatService,
private chatGateway: ChatGateway,
) {}
private allowed_chars = '-#!?_';
private escape_chars(str)
{
return str.split("").join("\\");
}
constructor(
private chatService: ChatService,
private chatGateway: ChatGateway,
) {}
@UseGuards(AuthenticateGuard)
@UseGuards(TwoFactorGuard)
@@ -94,8 +95,11 @@ export class ChatController {
async joinRoom(@Body() joinRoomDto: joinRoomDto, @Req() req, @Res() res): Promise<object>
{
console.log("- in joinRoom controller");
console.log("-- room_name", 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");
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");
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");
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
implements OnGatewayConnection, OnGatewayDisconnect
implements OnGatewayConnection, OnGatewayDisconnect
{
constructor
(
@@ -16,15 +16,19 @@ export class ChatGateway
private chatService: ChatService,
) {}
sockets = new Map<string, socketDto>();
@WebSocketServer()
server;
async handleConnection(client: socketDto) {
console.log('- Client connected :', client.id, client.handshake.query.username);
client.username = client.handshake.query.username.toString();
async handleConnection(socket: socketDto) {
console.log('- socket connected :', socket.id, socket.handshake.query.username);
socket.username = socket.handshake.query.username.toString();
this.sockets.set(socket.username, socket);
}
async handleDisconnect(client: socketDto) {
console.log('- Client disconnected :', client.id, client.username);
async handleDisconnect(socket: socketDto) {
this.sockets.delete(socket.username);
console.log('- socket disconnected :', socket.id, socket.username);
}
@SubscribeMessage('join')

View File

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