Skip to content

Commit

Permalink
add configureable delay for the first message on presence endpoint (n…
Browse files Browse the repository at this point in the history
…eeded for tests)
  • Loading branch information
msa0311 committed Aug 2, 2021
1 parent 2998f8d commit 2c65411
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 17 deletions.
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
setupFiles: ["./jestEnvVars.js"]
};
1 change: 1 addition & 0 deletions jestEnvVars.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
process.env.WS_FIRST_MESSAGE_DELAY=50;
22 changes: 10 additions & 12 deletions src/__tests__/server.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -415,10 +415,10 @@ describe("TunnelServer", () => {
const presence = await incomingSocket("client", {
"Authorization": `Bearer ${jwtToken}`
}, undefined, false, "presence");

presence.ws.onmessage = (message) => {
expect(message.data).toBe(JSON.stringify({
"presence" : {
expect(message.data).toBe(JSON.stringify({
"presence" : {
"userIds" : []
}
})
Expand All @@ -445,10 +445,10 @@ describe("TunnelServer", () => {
const presence = await incomingSocket("client", {
"Authorization": `Bearer ${jwtToken}`
}, undefined, false, "presence");

presence.ws.onmessage = (message) => {
expect(message.data).toBe(JSON.stringify({
"presence" : {
"presence" : {
"userIds" : ["lens-user"]
}
})
Expand All @@ -468,12 +468,12 @@ describe("TunnelServer", () => {
const presence = await incomingSocket("client", {
"Authorization": `Bearer ${jwtToken}`
}, undefined, false, "presence");

await sleep(200); //waits until first message was sent

presence.ws.onmessage = (message) => {
expect(message.data).toBe(JSON.stringify({
"presence" : {
"presence" : {
"userIds" : ["lens-user"]
}
})
Expand Down Expand Up @@ -501,7 +501,7 @@ describe("TunnelServer", () => {
const presence = await incomingSocket("client", {
"Authorization": `Bearer ${jwtToken}`
}, undefined, false, "presence");

await sleep(200); //waits until first message was sent

const agent = await incomingSocket("agent", {
Expand All @@ -515,7 +515,7 @@ describe("TunnelServer", () => {
presence.ws.onmessage = (message) => {
console.log(message.data);
expect(message.data).toBe(JSON.stringify({
"presence" : {
"presence" : {
"userIds" : []
}
})
Expand All @@ -526,11 +526,9 @@ describe("TunnelServer", () => {
client.ws.close();

await sleep(200); //waits until ClientDisconnected message was received

presence.ws.close();
});


});
});
});
6 changes: 3 additions & 3 deletions src/request-handlers/client-socket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export function handleClientSocket(req: IncomingMessage, socket: WebSocket, serv
}


export function handleClientPresenceSocket(req: IncomingMessage, socket: WebSocket, server: TunnelServer) {
export function handleClientPresenceSocket(req: IncomingMessage, socket: WebSocket, server: TunnelServer, firstMessageDelay = 0) {

if (!req.headers.authorization) {
console.log("SERVER: client did not specify authorization header, closing connection.");
Expand Down Expand Up @@ -84,8 +84,8 @@ export function handleClientPresenceSocket(req: IncomingMessage, socket: WebSock

setTimeout(function() {
sendPresenceData(socket, server, clusterId);
}, 50);
}, firstMessageDelay);

server.on("ClientConnected", () => {
sendPresenceData(socket, server, clusterId);
});
Expand Down
3 changes: 1 addition & 2 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ export class TunnelServer {
});
});


this.server.listen(port);

return listenPromise;
Expand Down Expand Up @@ -123,7 +122,7 @@ export class TunnelServer {
});
} else if (url.pathname === "/client/presence") {
this.ws?.handleUpgrade(req, socket, head, (socket: WebSocket) => {
handleClientPresenceSocket(req, socket, this);
handleClientPresenceSocket(req, socket, this, parseInt(process.env.WS_FIRST_MESSAGE_DELAY || ""));
});
}
}
Expand Down

0 comments on commit 2c65411

Please sign in to comment.