Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Apr 25, 2025. It is now read-only.
/chat_servicePublic archive

Commit09cf394

Browse files
committed
__FIX__ redis bug fixed
1 parentf638cb5 commit09cf394

File tree

9 files changed

+66
-59
lines changed

9 files changed

+66
-59
lines changed

‎lib/config/config.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ const config = {
4444
data:{},
4545
error_code:0
4646
},
47-
REDIS_PRIMERY_DB:process.env.REDIS_PRIMERY_DB,
48-
REDIS_SECONDARY_DB:process.env.REDIS_SECONDARY_DB,
47+
REDIS_PRIMERY_DB:parseInt(process.env.REDIS_PRIMERY_DB),
48+
REDIS_SECONDARY_DB:parseInt(process.env.REDIS_SECONDARY_DB),
4949
TOPIC:process.env.TOPIC,
5050
REDIS_HOST:process.env.REDIS_HOST,
5151
JWT_SECRET:process.env.JWT_SECRET,

‎lib/controllers/chat_controller.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ exports.newMessage = async (io, socket, data, callback) => {
4646
}else{
4747
constmessage_id=mongoose.Types.ObjectId();
4848
constincremental_id=awaitchat_dao.incrementId(room_id);
49+
log(incremental_id);
4950
constmsg={
5051
incremental_id,
5152
text,

‎lib/controllers/room_controller.js‎

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ exports.createRoom = async (io, socket, data, callback) => {
110110
type,
111111
state,
112112
unreadMessages,
113-
automatedMessage,
114-
notifyMessage,
113+
lastMessage,
115114
owner_id,
116115
is_new,
117116
}=data;
@@ -135,8 +134,8 @@ exports.createRoom = async (io, socket, data, callback) => {
135134
constsaved=awaitroom_dao.joinSocket(_id,socket.id,creator_id);
136135
constnotifyIncrId=awaitchat_dao.incrementId(_id);
137136
constautoIncrId=awaitchat_dao.incrementId(_id);
138-
notifyMessage.incremental_id=notifyIncrId;
139-
automatedMessage.incremental_id=autoIncrId;
137+
lastMessage[0].incremental_id=notifyIncrId;
138+
lastMessage[1].incremental_id=autoIncrId;
140139
if(saved){
141140
for(constmemberofmembers){
142141
constmemberSockets=awaituser_dao.getUserSocketsById(member.user_id);
@@ -153,8 +152,8 @@ exports.createRoom = async (io, socket, data, callback) => {
153152
log({
154153
'createRoom sockets to be notified':sockets
155154
});
156-
constnotifyKeyedMessage=newkm('newMessage',JSON.stringify(notifyMessage));
157-
constautoKeyedMessage=newkm('newMessage',JSON.stringify(automatedMessage));
155+
constnotifyKeyedMessage=newkm('newMessage',JSON.stringify(lastMessage[0]));
156+
constautoKeyedMessage=newkm('newMessage',JSON.stringify(lastMessage[1]));
158157
producer.send([Object.assign({},config.PAYLOAD,{
159158
messages:[notifyKeyedMessage,autoKeyedMessage]
160159
})],function(e,result){
@@ -191,8 +190,7 @@ exports.createRoom = async (io, socket, data, callback) => {
191190
type,
192191
state,
193192
unreadMessages,
194-
notifyMessage,
195-
automatedMessage,
193+
lastMessage,
196194
owner_id,
197195
is_new,
198196
}
@@ -202,8 +200,7 @@ exports.createRoom = async (io, socket, data, callback) => {
202200
callback(Object.assign({},config.RESPONSE,{
203201
message:'room_created',
204202
data:{
205-
notifyMessage,
206-
automatedMessage
203+
lastMessage
207204
}
208205
}));
209206

@@ -309,7 +306,7 @@ exports.disconnecting = async (io, socket) => {
309306
});
310307
if(userRooms.length!==0){
311308
awaituser_dao.removeUserObject(socket.user_id);
312-
constrooms=awaitroom_dao.removeSocketFromRoom(userRooms,socket.id);
309+
constrooms=awaitroom_dao.removeSocketFromRooms(userRooms,socket.id);
313310
for(constroomofrooms){
314311
/**
315312
*@event module:SOCKET_EVENTS.event:disconnected

‎lib/dao/chat_dao.js‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
constlog=require('debug')('chat_service:dao:chat');
22
constelog=require('debug')('chat_service:error:dao:chat');
3+
const{REDIS_PRIMERY_DB,REDIS_SECONDARY_DB}=require('../config/config');
34
constwinston=require('../utils/logger');
45
const{
56
client
@@ -15,11 +16,11 @@ const {
1516
exports.getSenderIdBySocket=async(room_id,socket_id)=>{
1617
try{
1718
log({'getSenderIdBySocket data':{room_id, socket_id}});
18-
constpDB=awaitclient.selectAsync(0);
19-
log({pDB});
20-
constsender_id=awaitclient.hgetAsync(room_id,socket_id);
19+
//const pDB = await client.selectAsync(0);
20+
//log({pDB});
21+
constsender_id=awaitclient.multi().select(REDIS_PRIMERY_DB).hget(room_id,socket_id).execAsync();
2122
log({'getSenderIdBySocket result':sender_id});
22-
returnPromise.resolve(sender_id);
23+
returnPromise.resolve(sender_id[1]);
2324
}catch(e){
2425
elog({'getSenderIdBySocket error':e});
2526
winston.error(`getSenderIdBySocket error -${e}`);
@@ -31,11 +32,11 @@ exports.getSenderIdBySocket = async (room_id, socket_id) => {
3132
exports.incrementId=asyncroom_id=>{
3233
try{
3334
log({'incrementId data':room_id});
34-
constsDB=awaitclient.selectAsync(1);
35-
log({sDB});
36-
constresult=awaitclient.incrAsync(room_id);
35+
//const sDB = await client.selectAsync(1);
36+
//log({sDB});
37+
constresult=awaitclient.multi().select(REDIS_SECONDARY_DB).incr(room_id).execAsync();
3738
log({'incrementId result':result});
38-
returnPromise.resolve(result);
39+
returnPromise.resolve(result[1]);
3940
}catch(e){
4041
elog({'incrementId error':e});
4142
winston.error(`error in get incremental id -${e.stack}-${newDate()}`);

‎lib/dao/room_dao.js‎

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
constwinston=require('../utils/logger');
22
constlog=require('debug')('chat_service:dao:room');
33
constelog=require('debug')('chat_service:error:dao:room');
4+
const{REDIS_PRIMERY_DB}=require('../config/config');
45
const{
56
client
67
}=require('../utils/redis');
@@ -20,11 +21,15 @@ const {
2021
exports.joinSocket=async(room_id,socket_id,joined_id)=>{
2122
try{
2223
log({'joinSocket data':{room_id, socket_id, joined_id}});
23-
constpDB=awaitclient.selectAsync(0);
24-
log({pDB});
25-
constjoinedToRoom=awaitclient.hsetAsync(room_id,socket_id,joined_id);
26-
constjoinedToUser=awaitclient.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+
constjoined=awaitclient.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]}});
2833
returnPromise.resolve(true);
2934
}catch(e){
3035
elog({'joinSocket error':e});
@@ -36,12 +41,12 @@ exports.joinSocket = async (room_id, socket_id, joined_id) => {
3641
exports.getRoomMembersId=asyncroom_id=>{
3742
try{
3843
log({'getRoomMembersId data':room_id});
39-
constpDB=awaitclient.selectAsync(0);
40-
log({pDB});
41-
constmembers=awaitclient.hvalsAsync(room_id);
44+
//const pDB = await client.selectAsync(0);
45+
//log({pDB});
46+
constmembers=awaitclient.multi().select(REDIS_PRIMERY_DB).hvals(room_id).execAsync();
4247
if(members.lenght!==0){
4348
log({'getRoomMembersId result':members});
44-
returnPromise.resolve(members);
49+
returnPromise.resolve(members[1]);
4550
}
4651
}catch(e){
4752
elog({'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)=>{
5964
try{
60-
log({'removeSocketFromRoom data':{rooms, socket_id}});
61-
constpDB=awaitclient.selectAsync(0);
62-
log({pDB});
65+
log({'removeSocketFromRooms data':{rooms, socket_id}});
66+
//const pDB = await client.selectAsync(0);
67+
//log({pDB});
6368
for(constroomofrooms){
64-
awaitclient.hdelAsync(room,socket_id);
69+
awaitclient.multi().select(REDIS_PRIMERY_DB).hdel(room,socket_id).execAsync();
6570
}
66-
log({'removeSocketFromRoom result':rooms});
71+
log({'removeSocketFromRooms result':rooms});
6772
returnPromise.resolve(rooms);
6873

6974
}catch(e){
70-
elog({'removeSocketFromRoom error':e});
75+
elog({'removeSocketFromRooms error':e});
7176
winston.error(`error in remove socket from room -${e}`);
7277
returnPromise.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)=>{
102107
try{
103-
log({'findSocketsById data':{id, room_id}});
104-
constpDB=awaitclient.selectAsync(0);
105-
log({pDB});
106-
consthashmap=awaitclient.hgetallAsync(room_id);
107-
constsockets=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+
consthashmap=awaitclient.multi().select(REDIS_PRIMERY_DB).hgetall(room_id).execAsync;
112+
constsockets=Object.keys(hashmap).filter(key=>hashmap[key]===sender_id);
108113
log({'findSocketsById result':sockets});
109114
returnPromise.resolve(sockets);
110115
}catch(e){

‎lib/dao/start_dao.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const {
77

88
exports.flushDB=async()=>{
99
try{
10+
// const test = await client.multi().select(0).set('bullshit', 'morebullshit').execAsync();
11+
// log({test});
1012
awaitclient.selectAsync(0);
1113
constflushed=awaitclient.flushdb();
1214
log('db flushed succesfully');

‎lib/dao/user_dao.js‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
constwinston=require('../utils/logger');
22
constlog=require('debug')('chat_service:dao:user');
33
constelog=require('debug')('chat_service:error:dao:user');
4+
const{REDIS_PRIMERY_DB}=require('../config/config');
45
const{
56
client
67
}=require('../utils/redis');
@@ -9,11 +10,11 @@ const {
910
exports.getUserSocketsById=asyncuser_id=>{
1011
try{
1112
log({'getUserSocketsById data':user_id});
12-
constpDB=awaitclient.selectAsync(0);
13-
log({pDB});
14-
constuserSockets=awaitclient.hkeysAsync(user_id);
13+
//const pDB = await client.selectAsync(0);
14+
//log({pDB});
15+
constuserSockets=awaitclient.multi().select(REDIS_PRIMERY_DB).hkeys(user_id).execAsync();
1516
log({'getUserSocketsById result':userSockets});
16-
returnPromise.resolve(userSockets);
17+
returnPromise.resolve(userSockets[1]);
1718
}catch(e){
1819
elog({'getUserSocketsById error':e});
1920
winston.error(`error in getUserSocketsById -${e}`);
@@ -24,9 +25,9 @@ exports.getUserSocketsById = async user_id => {
2425
exports.getUserRoomsById=asyncuser_id=>{
2526
try{
2627
log({'getUserRoomsById data':user_id});
27-
constpDB=awaitclient.selectAsync(0);
28-
log({pDB});
29-
constuserRooms=awaitclient.hvalsAsync(user_id);
28+
//const pDB = await client.selectAsync(0);
29+
//log({pDB});
30+
constuserRooms=awaitclient.multi().select(REDIS_PRIMERY_DB).hvals(user_id).execAsync();
3031
log({'getUserRoomsById result':userRooms});
3132
returnPromise.resolve(userRooms);
3233
}catch(e){
@@ -39,12 +40,12 @@ exports.getUserRoomsById = async user_id => {
3940
exports.removeUserObject=asyncuser_id=>{
4041
try{
4142
log({'removeUserObject data':user_id});
42-
constpDB=awaitclient.selectAsync(0);
43-
log({pDB});
44-
constsockets=awaitclient.hkeysAsync(user_id);
43+
//const pDB = await client.selectAsync(0);
44+
//log({pDB});
45+
constsockets=awaitclient.multi().select(REDIS_PRIMERY_DB).hkeys(user_id).execAsync();
4546
log({'removeUserObject result':sockets});
46-
for(constsocketofsockets){
47-
awaitclient.hdelAsync(user_id,socket);
47+
for(constsocketofsockets[1]){
48+
awaitclient.multi().select(REDIS_PRIMERY_DB).hdel(user_id,socket).execAsync();
4849
}
4950
returnPromise.resolve(true);
5051
}catch(e){

‎lib/utils/validator.js‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ exports.createRoom = joi.object().keys({
2020
creator_id:joi.string().required().regex(/^[a-f\d]{24}$/i),
2121
type:joi.string().required(),
2222
state:joi.string().required(),
23-
unreadMessages:joi.number().required(),
24-
automatedMessage:joi.object().required(),
25-
notifyMessage:joi.object().required(),
23+
lastMessage:joi.array().required(),
24+
unreadMessages:joi.number().optional(),
2625
owner_id:joi.required(),
2726
is_new:joi.required(),
2827
access_token:joi.optional()

‎package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"license":"ISC",
1616
"dependencies": {
1717
"app-root-path":"^2.1.0",
18+
"async":"^2.6.2",
1819
"bluebird":"^3.5.3",
1920
"body-parser":"^1.18.3",
2021
"cookie-parser":"^1.4.4",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp