Merge branch 'develop' of github.com:thecodingmachine/workadventure into GlobalMessageToWorld
This commit is contained in:
commit
9fa7c7aac0
@ -45,88 +45,97 @@ const roomManager: IRoomManagerServer = {
|
|||||||
let room: GameRoom | null = null;
|
let room: GameRoom | null = null;
|
||||||
let user: User | null = null;
|
let user: User | null = null;
|
||||||
|
|
||||||
call.on("data", async (message: PusherToBackMessage) => {
|
call.on("data", (message: PusherToBackMessage) => {
|
||||||
try {
|
(async () => {
|
||||||
if (room === null || user === null) {
|
try {
|
||||||
if (message.hasJoinroommessage()) {
|
if (room === null || user === null) {
|
||||||
socketManager
|
if (message.hasJoinroommessage()) {
|
||||||
.handleJoinRoom(call, message.getJoinroommessage() as JoinRoomMessage)
|
socketManager
|
||||||
.then(({ room: gameRoom, user: myUser }) => {
|
.handleJoinRoom(call, message.getJoinroommessage() as JoinRoomMessage)
|
||||||
if (call.writable) {
|
.then(({ room: gameRoom, user: myUser }) => {
|
||||||
room = gameRoom;
|
if (call.writable) {
|
||||||
user = myUser;
|
room = gameRoom;
|
||||||
} else {
|
user = myUser;
|
||||||
//Connexion may have been closed before the init was finished, so we have to manually disconnect the user.
|
} else {
|
||||||
socketManager.leaveRoom(gameRoom, myUser);
|
//Connexion may have been closed before the init was finished, so we have to manually disconnect the user.
|
||||||
}
|
socketManager.leaveRoom(gameRoom, myUser);
|
||||||
})
|
}
|
||||||
.catch((e) => emitError(call, e));
|
})
|
||||||
} else {
|
.catch((e) => emitError(call, e));
|
||||||
throw new Error("The first message sent MUST be of type JoinRoomMessage");
|
} else {
|
||||||
}
|
throw new Error("The first message sent MUST be of type JoinRoomMessage");
|
||||||
} else {
|
|
||||||
if (message.hasJoinroommessage()) {
|
|
||||||
throw new Error("Cannot call JoinRoomMessage twice!");
|
|
||||||
} else if (message.hasUsermovesmessage()) {
|
|
||||||
socketManager.handleUserMovesMessage(
|
|
||||||
room,
|
|
||||||
user,
|
|
||||||
message.getUsermovesmessage() as UserMovesMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasSilentmessage()) {
|
|
||||||
socketManager.handleSilentMessage(room, user, message.getSilentmessage() as SilentMessage);
|
|
||||||
} else if (message.hasItemeventmessage()) {
|
|
||||||
socketManager.handleItemEvent(room, user, message.getItemeventmessage() as ItemEventMessage);
|
|
||||||
} else if (message.hasVariablemessage()) {
|
|
||||||
await socketManager.handleVariableEvent(
|
|
||||||
room,
|
|
||||||
user,
|
|
||||||
message.getVariablemessage() as VariableMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasWebrtcsignaltoservermessage()) {
|
|
||||||
socketManager.emitVideo(
|
|
||||||
room,
|
|
||||||
user,
|
|
||||||
message.getWebrtcsignaltoservermessage() as WebRtcSignalToServerMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasWebrtcscreensharingsignaltoservermessage()) {
|
|
||||||
socketManager.emitScreenSharing(
|
|
||||||
room,
|
|
||||||
user,
|
|
||||||
message.getWebrtcscreensharingsignaltoservermessage() as WebRtcSignalToServerMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasPlayglobalmessage()) {
|
|
||||||
socketManager.emitPlayGlobalMessage(room, message.getPlayglobalmessage() as PlayGlobalMessage);
|
|
||||||
} else if (message.hasQueryjitsijwtmessage()) {
|
|
||||||
socketManager.handleQueryJitsiJwtMessage(
|
|
||||||
user,
|
|
||||||
message.getQueryjitsijwtmessage() as QueryJitsiJwtMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasEmotepromptmessage()) {
|
|
||||||
socketManager.handleEmoteEventMessage(
|
|
||||||
room,
|
|
||||||
user,
|
|
||||||
message.getEmotepromptmessage() as EmotePromptMessage
|
|
||||||
);
|
|
||||||
} else if (message.hasSendusermessage()) {
|
|
||||||
const sendUserMessage = message.getSendusermessage();
|
|
||||||
if (sendUserMessage !== undefined) {
|
|
||||||
socketManager.handlerSendUserMessage(user, sendUserMessage);
|
|
||||||
}
|
|
||||||
} else if (message.hasBanusermessage()) {
|
|
||||||
const banUserMessage = message.getBanusermessage();
|
|
||||||
if (banUserMessage !== undefined) {
|
|
||||||
socketManager.handlerBanUserMessage(room, user, banUserMessage);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Unhandled message type");
|
if (message.hasJoinroommessage()) {
|
||||||
|
throw new Error("Cannot call JoinRoomMessage twice!");
|
||||||
|
} else if (message.hasUsermovesmessage()) {
|
||||||
|
socketManager.handleUserMovesMessage(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getUsermovesmessage() as UserMovesMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasSilentmessage()) {
|
||||||
|
socketManager.handleSilentMessage(room, user, message.getSilentmessage() as SilentMessage);
|
||||||
|
} else if (message.hasItemeventmessage()) {
|
||||||
|
socketManager.handleItemEvent(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getItemeventmessage() as ItemEventMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasVariablemessage()) {
|
||||||
|
await socketManager.handleVariableEvent(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getVariablemessage() as VariableMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasWebrtcsignaltoservermessage()) {
|
||||||
|
socketManager.emitVideo(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getWebrtcsignaltoservermessage() as WebRtcSignalToServerMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasWebrtcscreensharingsignaltoservermessage()) {
|
||||||
|
socketManager.emitScreenSharing(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getWebrtcscreensharingsignaltoservermessage() as WebRtcSignalToServerMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasPlayglobalmessage()) {
|
||||||
|
socketManager.emitPlayGlobalMessage(
|
||||||
|
room,
|
||||||
|
message.getPlayglobalmessage() as PlayGlobalMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasQueryjitsijwtmessage()) {
|
||||||
|
socketManager.handleQueryJitsiJwtMessage(
|
||||||
|
user,
|
||||||
|
message.getQueryjitsijwtmessage() as QueryJitsiJwtMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasEmotepromptmessage()) {
|
||||||
|
socketManager.handleEmoteEventMessage(
|
||||||
|
room,
|
||||||
|
user,
|
||||||
|
message.getEmotepromptmessage() as EmotePromptMessage
|
||||||
|
);
|
||||||
|
} else if (message.hasSendusermessage()) {
|
||||||
|
const sendUserMessage = message.getSendusermessage();
|
||||||
|
if (sendUserMessage !== undefined) {
|
||||||
|
socketManager.handlerSendUserMessage(user, sendUserMessage);
|
||||||
|
}
|
||||||
|
} else if (message.hasBanusermessage()) {
|
||||||
|
const banUserMessage = message.getBanusermessage();
|
||||||
|
if (banUserMessage !== undefined) {
|
||||||
|
socketManager.handlerBanUserMessage(room, user, banUserMessage);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Error("Unhandled message type");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
emitError(call, e);
|
||||||
|
call.end();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
})().catch((e) => console.error(e));
|
||||||
console.error(e);
|
|
||||||
emitError(call, e);
|
|
||||||
call.end();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
call.on("end", () => {
|
call.on("end", () => {
|
||||||
|
@ -85,6 +85,6 @@ const proxyCommand = new Proxy(new WorkadventureStateCommands(), {
|
|||||||
target.saveVariable(p.toString(), value);
|
target.saveVariable(p.toString(), value);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
});
|
}) as WorkadventureStateCommands & { [key: string]: unknown };
|
||||||
|
|
||||||
export default proxyCommand;
|
export default proxyCommand;
|
||||||
|
@ -632,12 +632,12 @@ export class SocketManager implements ZoneEventListener {
|
|||||||
tabUrlRooms = [clientRoomUrl];
|
tabUrlRooms = [clientRoomUrl];
|
||||||
}
|
}
|
||||||
|
|
||||||
let roomMessage = new AdminRoomMessage();
|
const roomMessage = new AdminRoomMessage();
|
||||||
roomMessage.setMessage(playGlobalMessageEvent.getContent());
|
roomMessage.setMessage(playGlobalMessageEvent.getContent());
|
||||||
roomMessage.setType(playGlobalMessageEvent.getType());
|
roomMessage.setType(playGlobalMessageEvent.getType());
|
||||||
|
|
||||||
for (let roomUrl of tabUrlRooms) {
|
for (const roomUrl of tabUrlRooms) {
|
||||||
let apiRoom = await apiClientRepository.getClient(roomUrl);
|
const apiRoom = await apiClientRepository.getClient(roomUrl);
|
||||||
roomMessage.setRoomid(roomUrl);
|
roomMessage.setRoomid(roomUrl);
|
||||||
apiRoom.sendAdminMessageToRoom(roomMessage, (response) => {
|
apiRoom.sendAdminMessageToRoom(roomMessage, (response) => {
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user