workadventure/benchmark/index.ts

61 lines
1.5 KiB
TypeScript
Raw Normal View History

2020-09-29 17:24:16 +02:00
import {RoomConnection} from "../front/src/Connexion/RoomConnection";
import {connectionManager} from "../front/src/Connexion/ConnectionManager";
2020-09-28 18:52:54 +02:00
import * as WebSocket from "ws"
2020-10-21 14:55:18 +02:00
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
RoomConnection.setWebsocketFactory((url: string) => {
2020-09-28 18:52:54 +02:00
return new WebSocket(url);
});
async function startOneUser(): Promise<void> {
2020-10-21 14:55:18 +02:00
await connectionManager.anonymousLogin(true);
2020-10-21 15:15:07 +02:00
const connection = await connectionManager.connectToRoomSocket(process.env.ROOM_ID ? process.env.ROOM_ID : '_/global/maps.workadventure.localhost/Floor0/floor0.json', 'TEST', ['male3'],
2020-10-21 14:55:18 +02:00
{
x: 783,
y: 170
}, {
top: 0,
bottom: 200,
left: 500,
right: 800
});
console.log(connection.getUserId());
let angle = Math.random() * Math.PI * 2;
for (let i = 0; i < 100; i++) {
const x = Math.floor(320 + 1472/2 * (1 + Math.sin(angle)));
const y = Math.floor(200 + 1090/2 * (1 + Math.cos(angle)));
connection.sharePosition(x, y, 'down', true, {
top: y - 200,
bottom: y + 200,
left: x - 320,
right: x + 320
})
angle += 0.05;
await sleep(200);
}
await sleep(10000);
connection.closeConnection();
}
(async () => {
2020-09-30 12:12:24 +02:00
connectionManager.initBenchmark();
2020-09-29 17:24:16 +02:00
2020-10-01 15:55:23 +02:00
for (let userNo = 0; userNo < 160; userNo++) {
2020-09-18 17:36:33 +02:00
startOneUser();
// Wait 0.5s between adding users
2020-10-01 15:55:23 +02:00
await sleep(125);
}
})();