Skip to content

Commit 5f0151b

Browse files
authored
Merge pull request #11 from AgoraSystems/subRefsMap-use-maps-and-sets
Fix bugs in map/set usage for subscription methods
2 parents 0895631 + 437def8 commit 5f0151b

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/redis-pubsub.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {Cluster, Ok, Redis, RedisOptions} from 'ioredis';
2-
3-
import {PubSubAsyncIterator} from './pubsub-async-iterator';
42
import {PubSubEngine} from 'graphql-subscriptions';
3+
import {PubSubAsyncIterator} from './pubsub-async-iterator';
54

65
type RedisClient = Redis | Cluster;
76
type OnMessage<T> = (message: T) => void;
@@ -93,9 +92,13 @@ export class RedisPubSub implements PubSubEngine {
9392
const id = this.currentSubscriptionId++;
9493
this.subscriptionMap[id] = [triggerName, onMessage];
9594

95+
if (!this.subsRefsMap.has(triggerName)) {
96+
this.subsRefsMap.set(triggerName, new Set());
97+
}
98+
9699
const refs = this.subsRefsMap.get(triggerName);
97-
if (refs?.size > 0) {
98-
refs.add(id)
100+
if (refs.size > 0) {
101+
refs.add(id);
99102
return Promise.resolve(id);
100103
} else {
101104
return new Promise<number>((resolve, reject) => {
@@ -105,7 +108,7 @@ export class RedisPubSub implements PubSubEngine {
105108
if (err) {
106109
reject(err);
107110
} else {
108-
refs.add(id)
111+
refs.add(id);
109112
resolve(id);
110113
}
111114
});
@@ -126,7 +129,7 @@ export class RedisPubSub implements PubSubEngine {
126129

127130
this.subsRefsMap.delete(triggerName);
128131
} else {
129-
refs.delete(subId)
132+
refs.delete(subId);
130133
}
131134
delete this.subscriptionMap[subId];
132135
}
@@ -174,10 +177,10 @@ export class RedisPubSub implements PubSubEngine {
174177
parsedMessage = message;
175178
}
176179

177-
for (const subId in subscribers) {
180+
subscribers.forEach(subId => {
178181
const [, listener] = this.subscriptionMap[subId];
179182
listener(parsedMessage);
180-
}
183+
});
181184
}
182185
}
183186

0 commit comments

Comments
 (0)