fix issue with expire messages

bump version to 0.3.1
This commit is contained in:
afrokick 2020-03-11 11:02:18 +03:00
parent f9469a958a
commit a956168f55
4 changed files with 16 additions and 12 deletions

View File

@ -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);

View File

@ -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": {

View File

@ -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;
} }
} }

View File

@ -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();
}); });