11const winston = require ( '../utils/logger' ) ;
22const log = require ( 'debug' ) ( 'chat_service:dao:room' ) ;
33const elog = require ( 'debug' ) ( 'chat_service:error:dao:room' ) ;
4+ const { REDIS_PRIMERY_DB } = require ( '../config/config' ) ;
45const {
56client
67} = require ( '../utils/redis' ) ;
@@ -20,11 +21,15 @@ const {
2021exports . joinSocket = async ( room_id , socket_id , joined_id ) => {
2122try {
2223log ( { 'joinSocket data' :{ room_id, socket_id, joined_id} } ) ;
23- const pDB = await client . selectAsync ( 0 ) ;
24- log ( { pDB} ) ;
25- const joinedToRoom = await client . hsetAsync ( room_id , socket_id , joined_id ) ;
26- const joinedToUser = await client . hsetAsync ( joined_id , socket_id , room_id ) ;
27- log ( { 'joinSocket result' :{ joinedToRoom, joinedToUser} } ) ;
24+ // const pDB = await client.selectAsync(0);
25+ // log({pDB});
26+ // const joinedToRoom = await client.hsetAsync(room_id, socket_id, joined_id);
27+ // const joinedToUser = await client.hsetAsync(joined_id, socket_id, room_id);
28+ const joined = await client . multi ( ) . select ( REDIS_PRIMERY_DB ) .
29+ hset ( room_id , socket_id , joined_id ) .
30+ hset ( joined_id , socket_id , room_id ) .
31+ execAsync ( ) ;
32+ log ( { 'joinSocket result' :{ joinedToRoom :joined [ 1 ] , joinedToUser :joined [ 2 ] } } ) ;
2833return Promise . resolve ( true ) ;
2934} catch ( e ) {
3035elog ( { 'joinSocket error' :e } ) ;
@@ -36,12 +41,12 @@ exports.joinSocket = async (room_id, socket_id, joined_id) => {
3641exports . getRoomMembersId = async room_id => {
3742try {
3843log ( { 'getRoomMembersId data' :room_id } ) ;
39- const pDB = await client . selectAsync ( 0 ) ;
40- log ( { pDB} ) ;
41- const members = await client . hvalsAsync ( room_id ) ;
44+ // const pDB = await client.selectAsync(0);
45+ // log({pDB});
46+ const members = await client . multi ( ) . select ( REDIS_PRIMERY_DB ) . hvals ( room_id ) . execAsync ( ) ;
4247if ( members . lenght !== 0 ) {
4348log ( { 'getRoomMembersId result' :members } ) ;
44- return Promise . resolve ( members ) ;
49+ return Promise . resolve ( members [ 1 ] ) ;
4550}
4651} catch ( e ) {
4752elog ( { 'getRoomMembersId error' :e } ) ;
@@ -52,22 +57,22 @@ exports.getRoomMembersId = async room_id => {
5257
5358
5459/**
55- *removeSocketFromRoom
60+ *removeSocketFromRooms
5661 */
5762
58- exports . removeSocketFromRoom = async ( rooms , socket_id ) => {
63+ exports . removeSocketFromRooms = async ( rooms , socket_id ) => {
5964try {
60- log ( { 'removeSocketFromRoom data' :{ rooms, socket_id} } ) ;
61- const pDB = await client . selectAsync ( 0 ) ;
62- log ( { pDB} ) ;
65+ log ( { 'removeSocketFromRooms data' :{ rooms, socket_id} } ) ;
66+ // const pDB = await client.selectAsync(0);
67+ // log({pDB});
6368for ( const room of rooms ) {
64- await client . hdelAsync ( room , socket_id ) ;
69+ await client . multi ( ) . select ( REDIS_PRIMERY_DB ) . hdel ( room , socket_id ) . execAsync ( ) ;
6570}
66- log ( { 'removeSocketFromRoom result' :rooms } ) ;
71+ log ( { 'removeSocketFromRooms result' :rooms } ) ;
6772return Promise . resolve ( rooms ) ;
6873
6974} catch ( e ) {
70- elog ( { 'removeSocketFromRoom error' :e } ) ;
75+ elog ( { 'removeSocketFromRooms error' :e } ) ;
7176winston . error ( `error in remove socket from room -${ e } ` ) ;
7277return Promise . reject ( e ) ;
7378}
@@ -98,13 +103,13 @@ exports.removeSocketFromRoom = async (rooms, socket_id) => {
98103// }
99104// };
100105
101- exports . findSocketsById = async ( id , room_id ) => {
106+ exports . findSocketsById = async ( sender_id , room_id ) => {
102107try {
103- log ( { 'findSocketsById data' :{ id , room_id} } ) ;
104- const pDB = await client . selectAsync ( 0 ) ;
105- log ( { pDB} ) ;
106- const hashmap = await client . hgetallAsync ( room_id ) ;
107- const sockets = Object . keys ( hashmap ) . filter ( key => hashmap [ key ] === id ) ;
108+ log ( { 'findSocketsById data' :{ sender_id , room_id} } ) ;
109+ // const pDB = await client.selectAsync(0);
110+ // log({pDB});
111+ const hashmap = await client . multi ( ) . select ( REDIS_PRIMERY_DB ) . hgetall ( room_id ) . execAsync ;
112+ const sockets = Object . keys ( hashmap ) . filter ( key => hashmap [ key ] === sender_id ) ;
108113log ( { 'findSocketsById result' :sockets } ) ;
109114return Promise . resolve ( sockets ) ;
110115} catch ( e ) {