11import { AuthUtil } from "../utils/auth.util" ;
22import { MessageRepository } from "../repositories/message.repository" ;
33import { MessageModel } from "../models/message.model" ;
4+ import { UserRepository } from "../repositories/user.repository" ;
45
56const io = require ( 'socket.io' ) ( ) ;
67export const SocketConf : any = { } ;
78export class Socket {
89 private auth : AuthUtil ;
910 private messageRepository : MessageRepository ;
11+ private userRepository : UserRepository ;
1012 constructor ( ) {
1113 this . auth = new AuthUtil ( ) ;
1214 this . messageRepository = new MessageRepository ( ) ;
15+ this . userRepository = new UserRepository ( ) ;
1316 }
1417 init ( server ) {
1518 SocketConf . io = io . listen ( server , {
@@ -37,9 +40,14 @@ export class Socket {
3740 SocketConf . io . on ( 'connect' , socket => {
3841 console . log ( 'Client Connectted' ) ;
3942 socket . join ( socket . handshake . query . loggedUser . _id ) ;
40- socket . on ( 'join' , room => {
43+ socket . on ( 'join' , async ( room ) => {
4144 socket . join ( room . roomName ) ;
4245 io . to ( room . roomName ) . emit ( 'New User Connected...' ) ;
46+ await this . userRepository . updateWithoutSet (
47+ {
48+ "_id" : { "$eq" : socket . handshake . query . loggedUser . _id } ,
49+ } , { "$addToSet" : { sockets : socket . id } } , { }
50+ ) ;
4351 } ) ;
4452
4553 socket . on ( 'message' , async ( messageObject : MessageModel ) => {
@@ -52,7 +60,7 @@ export class Socket {
5260 messageObject . members . filter ( user => user . _id !== messageObject . sender ) . forEach ( user => {
5361 if ( io . sockets . adapter . rooms [ user . _id ] && io . sockets . adapter . rooms [ user . _id ] . length ) {
5462 io . to ( user . _id ) . emit ( 'unseen-message' , message ) ;
55- }
63+ }
5664 } ) ;
5765 } ) ;
5866
@@ -69,11 +77,16 @@ export class Socket {
6977 } , { "$addToSet" : { seen : socket . handshake . query . loggedUser . _id } } , { multi : true }
7078 ) ;
7179 } ) ;
72- socket . on ( 'disconnect' , function ( ) {
80+ socket . on ( 'disconnect' , async ( ) => {
7381 console . log ( 'disconnected event' ) ;
82+ await this . userRepository . updateWithoutSet (
83+ {
84+ "_id" : { "$eq" : socket . handshake . query . loggedUser . _id } ,
85+ } , { "$pull" : { sockets : socket . id } } , { multi : true }
86+ ) ;
7487 //socket.manager.onClientDisconnect(socket.id); --> endless loop with this disconnect event on server side
7588 //socket.disconnect(); --> same here
76- } ) ;
89+ } ) ;
7790 } ) ;
7891 // Added Disconnection FUnction of socket
7992 // Remove client from all joined roomes once socket is disconnected
0 commit comments