123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- import { io } from "socket.io-client";
- import customParser from "socket.io-msgpack-parser";
- const url = process.argv[2];
- const count = process.argv[3];
- const userStartId = process.argv[4];
- const testSceneNum = process.argv[5] || "t-test";
- const roomId = process.argv[6] || "00001";
- const isMockCamera = process.argv[7] || 0;
- const cameraInterval = process.argv[8] || 3000;
- let testCamera;
- console.log(
- "argv:",
- userStartId,
- testSceneNum,
- roomId,
- isMockCamera,
- cameraInterval
- );
- console.log("socket-info::url:config-->", url);
- console.log("socket-info::url:count-->", count);
- console.log("socket-info::start-->压力测试正在开始");
- const URL = url || process.env.URL;
- // http://zhang9394@zhangyupeng:face3d.4dage.com:7005/zhangyupeng/chatIM.git
- const MAX_CLIENTS = Number(count) || 500;
- const CLIENT_CREATION_INTERVAL_IN_MS = 10;
- const EMIT_INTERVAL_IN_MS = 1000;
- const EMIT_INTERVAL_IN_MS_camera = cameraInterval;
- // wws://test-socket.4dkankan.com/watch
- let clientCount = 0;
- let lastReport = new Date().getTime();
- let packetsSinceLastReport = 0;
- // let testSceneNum = "t-test";
- // let roomId = "00001";
- let userLimitNum = MAX_CLIENTS;
- let agentId = 0;
- const createAgent = () => {
- agentId += 1;
- const nickName = `test_name_${userStartId}${agentId}`;
- const userId = `${userStartId}${agentId}`;
- const oid = `oid-${userStartId}${agentId}`;
- const role = agentId === 1 ? "leader" : "customer";
- createClient({ userId, nickName, from: "0", role: role, oid });
- createClient({ userId, nickName, from: "1", role: role, oid });
- createClient({ userId, nickName, from: "2", role: role, oid });
- };
- const createClient = ({ userId, nickName, from, role, oid }) => {
- // for demonstration purposes, some clients stay stuck in HTTP long-polling
- const socket = io(URL, {
- path: "/fsl-node",
- transports: ["websocket"],
- parser: customParser,
- extraHeaders: {
- oid: oid,
- },
- query: {
- userId: userId,
- from: from || 2,
- sceneNum: testSceneNum,
- role: role,
- nickName: nickName,
- roomId: roomId,
- voiceStatus: 0,
- enableTalk: true,
- isAuthMic: 0,
- isAllowMic: 0,
- userLimitNum,
- myHeadUrl:
- "http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg",
- },
- });
- if (Number(isMockCamera) === 1) {
- setInterval(() => {
- const data = {
- testUserId: userId,
- item: {
- qua: {
- _x: -0.11495106988815072,
- _y: 0.13408027376477993,
- _z: 0.015660797097947755,
- _w: 0.9841562229407423,
- },
- mode: "panorama",
- pos: {
- x: 1.7477431297302246,
- y: -0.1338435709476471,
- z: 1.3797638416290283,
- },
- type: "Rotate",
- pano: "1",
- target: {
- x: 1.4874317088952322,
- y: -0.3643028004004215,
- z: 0.442146378191566,
- },
- },
- };
- socket.emit("client-benmark-server", data);
- }, EMIT_INTERVAL_IN_MS_camera);
- }
- setInterval(() => {
- socket.emit("client to server event");
- }, EMIT_INTERVAL_IN_MS);
- socket.on("server-benmark-client", (data) => {
- packetsSinceLastReport++;
- testCamera = data;
- // console.log("客户端收到服务端-镜头-MOCK", data);
- });
- // socket.emit("server-interval-room-broadcast", { time: 1000 });
- // socket.on("client-interval-room-broadcast", (data) => {
- // console.log(`客户端${userId}收到房间播报-MOCK"`, data);
- // });
- socket.on("server to client event", () => {
- packetsSinceLastReport++;
- });
- socket.on("disconnect", (reason) => {
- console.log(`disconnect due to ${reason}`);
- });
- if (++clientCount < MAX_CLIENTS) {
- setTimeout(createAgent, CLIENT_CREATION_INTERVAL_IN_MS);
- }
- };
- createAgent();
- const printReport = () => {
- const now = new Date().getTime();
- const durationSinceLastReport = (now - lastReport) / 1000;
- const packetsPerSeconds = (
- packetsSinceLastReport / durationSinceLastReport
- ).toFixed(2);
- console.log(
- `client count: ${clientCount} ; average packets received per second: ${packetsPerSeconds} ${
- testCamera ? " carmera:" + JSON.stringify(testCamera) : ""
- }`
- );
- packetsSinceLastReport = 0;
- lastReport = now;
- };
- setInterval(printReport, 5000);
|