Merge branch 'develop' of github.com:thecodingmachine/workadventure

This commit is contained in:
_Bastler
2021-12-23 21:45:55 +01:00
54 changed files with 2385 additions and 2026 deletions
+2 -2
View File
@@ -60,11 +60,11 @@ export class MapController extends BaseController {
JSON.stringify({
mapUrl,
policy_type: GameRoomPolicyTypes.ANONYMOUS_POLICY,
roomSlug: "", // Deprecated
roomSlug: null, // Deprecated
group: null,
tags: [],
textures: [],
contactPage: undefined,
contactPage: null,
authenticationMandatory: DISABLE_ANONYMOUS,
} as MapDetailsData)
);
@@ -1,12 +1,10 @@
import { App } from "../Server/sifrr.server";
import { HttpRequest, HttpResponse } from "uWebSockets.js";
const register = require("prom-client").register;
const collectDefaultMetrics = require("prom-client").collectDefaultMetrics;
import { register, collectDefaultMetrics } from "prom-client";
export class PrometheusController {
constructor(private App: App) {
collectDefaultMetrics({
timeout: 10000,
gcDurationBuckets: [0.001, 0.01, 0.1, 1, 2, 5], // These are the default buckets.
});
+52 -3
View File
@@ -16,6 +16,8 @@ import {
EmoteEventMessage,
CompanionMessage,
ErrorMessage,
PlayerDetailsUpdatedMessage,
SetPlayerDetailsMessage,
} from "../Messages/generated/messages_pb";
import { ClientReadableStream } from "grpc";
import { PositionDispatcher } from "_Model/PositionDispatcher";
@@ -32,6 +34,7 @@ export interface ZoneEventListener {
onGroupLeaves(groupId: number, listener: ExSocketInterface): void;
onEmote(emoteMessage: EmoteEventMessage, listener: ExSocketInterface): void;
onError(errorMessage: ErrorMessage, listener: ExSocketInterface): void;
onPlayerDetailsUpdated(playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage, listener: ExSocketInterface): void;
}
/*export type EntersCallback = (thing: Movable, listener: User) => void;
@@ -46,7 +49,8 @@ export class UserDescriptor {
private characterLayers: CharacterLayerMessage[],
private position: PositionMessage,
private visitCardUrl: string | null,
private companion?: CompanionMessage
private companion?: CompanionMessage,
private outlineColor?: number
) {
if (!Number.isInteger(this.userId)) {
throw new Error("UserDescriptor.userId is not an integer: " + this.userId);
@@ -65,7 +69,8 @@ export class UserDescriptor {
message.getCharacterlayersList(),
position,
message.getVisitcardurl(),
message.getCompanion()
message.getCompanion(),
message.getHasoutline() ? message.getOutlinecolor() : undefined
);
}
@@ -77,6 +82,14 @@ export class UserDescriptor {
this.position = position;
}
public updateDetails(playerDetails: SetPlayerDetailsMessage) {
if (playerDetails.getRemoveoutlinecolor()) {
this.outlineColor = undefined;
} else {
this.outlineColor = playerDetails.getOutlinecolor();
}
}
public toUserJoinedMessage(): UserJoinedMessage {
const userJoinedMessage = new UserJoinedMessage();
@@ -89,6 +102,12 @@ export class UserDescriptor {
}
userJoinedMessage.setCompanion(this.companion);
userJoinedMessage.setUseruuid(this.userUuid);
if (this.outlineColor !== undefined) {
userJoinedMessage.setOutlinecolor(this.outlineColor);
userJoinedMessage.setHasoutline(true);
} else {
userJoinedMessage.setHasoutline(false);
}
return userJoinedMessage;
}
@@ -209,7 +228,7 @@ export class Zone {
const userDescriptor = this.users.get(userId);
if (userDescriptor === undefined) {
console.error('Unexpected move message received for user "' + userId + '"');
console.error('Unexpected move message received for unknown user "' + userId + '"');
return;
}
@@ -219,6 +238,27 @@ export class Zone {
} else if (message.hasEmoteeventmessage()) {
const emoteEventMessage = message.getEmoteeventmessage() as EmoteEventMessage;
this.notifyEmote(emoteEventMessage);
} else if (message.hasPlayerdetailsupdatedmessage()) {
const playerDetailsUpdatedMessage =
message.getPlayerdetailsupdatedmessage() as PlayerDetailsUpdatedMessage;
const userId = playerDetailsUpdatedMessage.getUserid();
const userDescriptor = this.users.get(userId);
if (userDescriptor === undefined) {
console.error('Unexpected details message received for unknown user "' + userId + '"');
return;
}
const details = playerDetailsUpdatedMessage.getDetails();
if (details === undefined) {
console.error('Unexpected details message without details received for user "' + userId + '"');
return;
}
userDescriptor.updateDetails(details);
this.notifyPlayerDetailsUpdated(playerDetailsUpdatedMessage);
} else if (message.hasErrormessage()) {
const errorMessage = message.getErrormessage() as ErrorMessage;
this.notifyError(errorMessage);
@@ -308,6 +348,15 @@ export class Zone {
}
}
private notifyPlayerDetailsUpdated(playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage) {
for (const listener of this.listeners) {
if (listener.userId === playerDetailsUpdatedMessage.getUserid()) {
continue;
}
this.socketListener.onPlayerDetailsUpdated(playerDetailsUpdatedMessage, listener);
}
}
private notifyError(errorMessage: ErrorMessage) {
for (const listener of this.listeners) {
this.socketListener.onError(errorMessage, listener);
+1 -1
View File
@@ -1,4 +1,4 @@
const EventEmitter = require("events");
import { EventEmitter } from "events";
const clientJoinEvent = "clientJoin";
const clientLeaveEvent = "clientLeave";
+12 -1
View File
@@ -34,7 +34,7 @@ import {
VariableMessage,
ErrorMessage,
WorldFullMessage,
PositionMessage,
PlayerDetailsUpdatedMessage,
} from "../Messages/generated/messages_pb";
import { ProtobufUtils } from "../Model/Websocket/ProtobufUtils";
import { ADMIN_API_URL, JITSI_ISS, JITSI_URL, SECRET_JITSI_KEY, PUSHER_FORCE_ROOM_UPDATE } from "../Enum/EnvironmentVariable";
@@ -56,6 +56,7 @@ const debug = Debug("socket");
interface AdminSocketRoomsList {
[index: string]: number;
}
interface AdminSocketUsersList {
[index: string]: boolean;
}
@@ -284,6 +285,16 @@ export class SocketManager implements ZoneEventListener {
emitInBatch(listener, subMessage);
}
onPlayerDetailsUpdated(
playerDetailsUpdatedMessage: PlayerDetailsUpdatedMessage,
listener: ExSocketInterface
): void {
const subMessage = new SubMessage();
subMessage.setPlayerdetailsupdatedmessage(playerDetailsUpdatedMessage);
emitInBatch(listener, subMessage);
}
onError(errorMessage: ErrorMessage, listener: ExSocketInterface): void {
const subMessage = new SubMessage();
subMessage.setErrormessage(errorMessage);