Migrating user position messages to protobuf

This commit is contained in:
David Négrier 2020-09-18 15:51:15 +02:00
parent e9ca8721a6
commit df0636c513
10 changed files with 202 additions and 46 deletions

View file

@ -6,7 +6,7 @@ config:
token: "test"
phases:
- duration: 20
arrivalRate: 2
arrivalRate: 3
processor: "./socketioLoadTest.js"
scenarios:
- name: "Connects and moves player for 20 seconds"
@ -22,7 +22,7 @@ scenarios:
- emit:
channel: "join-room"
data:
roomId: 'global__api.workadventure.localhost/map/files/Floor0/floor0'
roomId: 'global__maps.workadventure.localhost/Floor0/floor0'
position:
x: 783
y: 170
@ -35,20 +35,10 @@ scenarios:
bottom: 200
- think: 1
- loop:
- function: "setYRandom"
- function: "setUserMovesMessage"
- emit:
channel: "user-position"
data:
position:
x: "{{ x }}"
y: "{{ y }}"
direction: 'down'
moving: false
viewport:
left: "{{ left }}"
top: "{{ top }}"
right: "{{ right }}"
bottom: "{{ bottom }}"
data: "{{ message }}"
- think: 0.2
count: 100
- think: 10

View file

@ -1,5 +1,8 @@
'use strict';
require("../messages/generated/messages_pb");
//import {PositionMessage, UserMovesMessage, ViewportMessage} from "../messages/generated/messages_pb";
module.exports = {
setYRandom
};
@ -18,3 +21,33 @@ function setYRandom(context, events, done) {
context.vars.bottom = context.vars.y + 200;
return done();
}
function setUserMovesMessage(context, events, done) {
if (context.angle === undefined) {
context.angle = Math.random() * Math.PI * 2;
}
context.angle += 0.05;
const x = Math.floor(320 + 1472/2 * (1 + Math.sin(context.angle)));
const y = Math.floor(200 + 1090/2 * (1 + Math.cos(context.angle)));
const positionMessage = new PositionMessage();
positionMessage.setX(x);
positionMessage.setY(y);
positionMessage.setDirection(PositionMessage.Direction.UP);
positionMessage.setMoving(false);
const viewportMessage = new ViewportMessage();
viewportMessage.setTop(y - 200);
viewportMessage.setBottom(y + 200);
viewportMessage.setLeft(x - 320);
viewportMessage.setRight(x + 320);
const userMovesMessage = new UserMovesMessage();
userMovesMessage.setPosition(positionMessage);
userMovesMessage.setViewport(viewportMessage);
context.vars.message = userMovesMessage.serializeBinary().buffer;
console.log(context.vars.message);
return done();
}