Browse Source

fix issue with expire messages
bump version to 0.3.1

afrokick 5 years ago
parent
commit
a956168f55

+ 3 - 2
dist/src/services/messagesExpire/index.js

@@ -37,13 +37,14 @@ class MessagesExpire {
                 continue;
                 continue;
             const messages = messageQueue.getMessages();
             const messages = messageQueue.getMessages();
             for (const message of messages) {
             for (const message of messages) {
-                if (!seen[message.src]) {
+                const seenKey = `${message.src}_${message.dst}`;
+                if (!seen[seenKey]) {
                     this.messageHandler.handle(undefined, {
                     this.messageHandler.handle(undefined, {
                         type: enums_1.MessageType.EXPIRE,
                         type: enums_1.MessageType.EXPIRE,
                         src: message.dst,
                         src: message.dst,
                         dst: message.src
                         dst: message.src
                     });
                     });
-                    seen[message.src] = true;
+                    seen[seenKey] = true;
                 }
                 }
             }
             }
             this.realm.clearMessageQueue(destinationClientId);
             this.realm.clearMessageQueue(destinationClientId);

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "peer",
   "name": "peer",
-  "version": "0.3.0",
+  "version": "0.3.1",
   "description": "PeerJS server component",
   "description": "PeerJS server component",
   "main": "dist/peerjs.server.min.js",
   "main": "dist/peerjs.server.min.js",
   "bin": {
   "bin": {

+ 4 - 2
src/services/messagesExpire/index.ts

@@ -66,14 +66,16 @@ export class MessagesExpire implements IMessagesExpire {
       const messages = messageQueue.getMessages();
       const messages = messageQueue.getMessages();
 
 
       for (const message of messages) {
       for (const message of messages) {
-        if (!seen[message.src]) {
+        const seenKey = `${message.src}_${message.dst}`;
+
+        if (!seen[seenKey]) {
           this.messageHandler.handle(undefined, {
           this.messageHandler.handle(undefined, {
             type: MessageType.EXPIRE,
             type: MessageType.EXPIRE,
             src: message.dst,
             src: message.dst,
             dst: message.src
             dst: message.src
           });
           });
 
 
-          seen[message.src] = true;
+          seen[seenKey] = true;
         }
         }
       }
       }
 
 

+ 8 - 7
test/services/messagesExpire/index.ts

@@ -8,11 +8,11 @@ import { MessageType } from '../../../src/enums';
 import { wait } from '../../utils';
 import { wait } from '../../utils';
 
 
 describe('MessagesExpire', () => {
 describe('MessagesExpire', () => {
-  const createTestMessage = (): IMessage => {
+  const createTestMessage = (dst: string): IMessage => {
     return {
     return {
       type: MessageType.OPEN,
       type: MessageType.OPEN,
       src: 'src',
       src: 'src',
-      dst: 'dst'
+      dst,
     };
     };
   };
   };
 
 
@@ -27,7 +27,7 @@ describe('MessagesExpire', () => {
 
 
     const client = new Client({ id: 'id', token: '' });
     const client = new Client({ id: 'id', token: '' });
     realm.setClient(client, 'id');
     realm.setClient(client, 'id');
-    realm.addMessageToQueue(client.getId(), createTestMessage());
+    realm.addMessageToQueue(client.getId(), createTestMessage('dst'));
 
 
     messagesExpire.startMessagesExpiration();
     messagesExpire.startMessagesExpiration();
 
 
@@ -53,15 +53,16 @@ describe('MessagesExpire', () => {
 
 
     const client = new Client({ id: 'id', token: '' });
     const client = new Client({ id: 'id', token: '' });
     realm.setClient(client, 'id');
     realm.setClient(client, 'id');
-    realm.addMessageToQueue(client.getId(), createTestMessage());
+    realm.addMessageToQueue(client.getId(), createTestMessage('dst1'));
+    realm.addMessageToQueue(client.getId(), createTestMessage('dst2'));
 
 
-    let handled = false;
+    let handledCount = 0;
 
 
     messageHandler.handle = (client, message): boolean => {
     messageHandler.handle = (client, message): boolean => {
       expect(client).to.be.undefined;
       expect(client).to.be.undefined;
       expect(message.type).to.be.eq(MessageType.EXPIRE);
       expect(message.type).to.be.eq(MessageType.EXPIRE);
 
 
-      handled = true;
+      handledCount++;
 
 
       return true;
       return true;
     };
     };
@@ -71,7 +72,7 @@ describe('MessagesExpire', () => {
     await wait(checkInterval * 2);
     await wait(checkInterval * 2);
     await wait(expireTimeout);
     await wait(expireTimeout);
 
 
-    expect(handled).to.be.true;
+    expect(handledCount).to.be.eq(2);
 
 
     messagesExpire.stopMessagesExpiration();
     messagesExpire.stopMessagesExpiration();
   });
   });