Skip to content

Commit

Permalink
Map rest user to socket login
Browse files Browse the repository at this point in the history
  • Loading branch information
youngkiu committed Feb 9, 2023
1 parent 88b1e73 commit 3aa476d
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 41 deletions.
Binary file removed public/images/btnG_complete.png
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 29 additions & 5 deletions src/events/events.gateway.ts
Expand Up @@ -19,7 +19,7 @@ export class EventsGateway

@WebSocketServer() public server: Server;

users = [];
onlineMap = {};

afterInit() {
this.logger.debug('init');
Expand All @@ -28,16 +28,40 @@ export class EventsGateway
this.logger.debug(
`client(${socket.id}) connected on namespace(${socket.nsp.name})`,
);
this.users.push(socket.id);
this.server.emit('users', { numOfUsers: this.users.length });
if (!this.onlineMap[socket.nsp.name]) {
this.onlineMap[socket.nsp.name] = {};
}
this.onlineMap[socket.nsp.name][socket.id] = '';
this.server.emit(
'onlineList',
Object.values(this.onlineMap[socket.nsp.name]),
);
}

handleDisconnect(@ConnectedSocket() socket: Socket) {
this.logger.debug(
`client(${socket.id}) disconnected on namespace(${socket.nsp.name})`,
);
this.users = this.users.filter((val) => val !== socket.id);
this.server.emit('users', { numOfUsers: this.users.length });
delete this.onlineMap[socket.nsp.name][socket.id];
this.server.emit(
'onlineList',
Object.values(this.onlineMap[socket.nsp.name]),
);
}

@SubscribeMessage('login')
handleLogin(@MessageBody() data, @ConnectedSocket() socket: Socket) {
const newNamespace = socket.nsp;
this.logger.debug(`login, ${socket.nsp.name}`);
this.onlineMap[socket.nsp.name][socket.id] = data;
newNamespace.emit(
'onlineList',
Object.values(this.onlineMap[socket.nsp.name]),
);

const channel = 'all';
this.logger.debug(`join, ${socket.nsp.name}, ${channel}`);
socket.join(`${socket.nsp.name}-${channel}`);
}

@SubscribeMessage('chat')
Expand Down
11 changes: 4 additions & 7 deletions src/users/user.controller.ts
Expand Up @@ -4,7 +4,7 @@ import {
ApiResponse,
ApiTags,
} from '@nestjs/swagger';
import { Controller, Get, Render, UseGuards } from '@nestjs/common';
import { Controller, Get, UseGuards } from '@nestjs/common';
import { JwtAuthGuard } from '../auth/jwt.auth.guard';
import { User } from './users.decorator';
import { UserDto } from './user.dto';
Expand All @@ -24,15 +24,12 @@ export class UserController {
})
@UseGuards(JwtAuthGuard)
@Get()
@Render('user')
protected(@User() user: UserDto) {
const { provider, id, username } = user;
return {
data: {
provider,
id,
username,
},
provider,
id,
username,
};
}
}
11 changes: 9 additions & 2 deletions views/chat.hbs
Expand Up @@ -25,9 +25,16 @@
$(function(){
var socket = io();
socket.on("users", function(data) {
fetch("/user")
.then(r=>r.json())
.then(data => {
console.log(data);
socket.emit("login", data);
});
socket.on("onlineList", function(data) {
console.log(data);
$("#numOfUsers").html("<strong>" + 'Number of Users: ' + "</strong>" + data.numOfUsers);
$("#numOfUsers").html("<strong>" + 'Users: ' + "</strong>" + data.map((user) => user.username));
});
socket.on("chat", function(data) {
Expand Down
2 changes: 1 addition & 1 deletion views/login.hbs
Expand Up @@ -16,7 +16,7 @@
</div>
<div class="row m-4 align-items-start">
<div class="col">
<img src='/images/btnG_complete.png' width='240'>
<img src='/images/btn_google_signin_light_focus_web.png' width='246'>
</div>
</div>
</div>
Expand Down
26 changes: 0 additions & 26 deletions views/user.hbs

This file was deleted.

0 comments on commit 3aa476d

Please sign in to comment.