store sockets in a map so controller can access them
This commit is contained in:
@@ -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 });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user