Message de la salle multiplay
Message de la salle multiplay

ZEPETO Multiplay fournit une interface d'envoi/réception de messages entre clients et serveurs (Room). Le serveur peut envoyer des messages exclusivement à des clients individuels ou globalement à tous les clients connectés.
Les types de messages de livraison prennent en charge les types Primitive, Schema, Custom (Object).
API du serveur
L'API du serveur fournit la méthode suivante.
API | Description |
|---|---|
onMessage(Type, Callback) | Le serveur ZEPETO Multiplay peut enregistrer les rappels mappés par type pour gérer les messages envoyés par les clients. Le paramètre type peut être défini sous forme de chaîne. |
client.send(Type, Message) | Fonction d'envoi de messages à un client spécifique. |
broadcast(Type, Message) | Fonction d'envoi de messages à tous les clients connectés à la salle. Vous pouvez l'envoyer à tous les clients connectés, ou vous pouvez en outre exclure des clients spécifiques de la liste. |
Si vous souhaitez connaître l'API ZEPETO.Multiplay Server, veuillez vous référer au document suivant.
📘 Veuillez vous référer au guide suivant. [ZEPETO.Multiplay(Server) API]
Recevoir un message
Ce qui suit est un exemple d'utilisation de onMessage.
onCreate() {
this.onMessage("action", (client: SandboxPlayer, message: string) => {
// Triggers when 'action' message is sent.
});
this.onMessage("*", (client: SandboxPlayer, type, message: string) => {
// Triggers when any other type of message is sent,
// excluding "action", which has its own specific handler defined above.
console.log(`${client.sessionId} sent ${type} ${message}`);
});
}Envoyer le message
Ce qui suit est un exemple d'utilisation de client.send.
onCreate() {
this.onMessage("echo", (client: SandboxPlayer, message: string) => {
// Send messge to sender
client.send("echo", `echo message: ${message}`);
});
}Ce qui suit est un exemple d’utilisation de la diffusion.
▼ Exemple de diffusion d'un message à tous les clients
onCreate() {
this.onMessage("action", (client: SandboxPlayer, message: string) => {
// Broadcast a message to all clients
this.broadcast("action-taken", "an action has been taken!");
});
}▼ Exemple de diffusion d'un message avec exclusion de clients spécifiques
onCreate() {
this.onMessage("fire", (client: SandboxPlayer, message: string) => {
// Sends "fire" event to every client, except the one who triggered it.
this.broadcast("fire", message, { except: client });
});
}API cliente
L'API client fournit la méthode suivante.
room.AddMessageHandler(Type, Message) | Les messages reçus du serveur peuvent être reçus en enregistrant un rappel AddMessageHandler. Vous pouvez définir le type de message que vous souhaitez recevoir lors de l'enregistrement d'un rappel de message. |
|---|---|
room.Send(Type, message) | Interface utilisée pour transférer les messages vers le serveur. Vous pouvez définir le type de message à transférer |
Recevoir un message Voici un exemple d'utilisation de room.AddMessageHandler.
this.multiplay.RoomJoined += (room: Room) => {
// Add server message listener type by "fire"
room.AddMessageHandler("fire", (message: string) => {
// Print server message
console.log(message);
});
};Envoyer un message Ce qui suit est un exemple d'utilisation de room.Send.
room.Send("message", "hello");Découvrez des exemples de différents types de messages de salle.
Serveur
import { Sandbox, SandboxOptions, SandboxPlayer } from 'ZEPETO.Multiplay';
interface MessageModel {
str: string,
isTest: boolean
}
export default class extends Sandbox {
onCreate(options: SandboxOptions) {
this.onMessage("action", (client: SandboxPlayer, message: string) => {
// Triggers when 'action' message is sent.
// Broadcast a message to all clients
this.broadcast("action-taken", "an action has been taken!");
});
this.onMessage("*", (client: SandboxPlayer, type, message: string) => {
// Triggers when any other type of message is sent,
// excluding "action", which has its own specific handler defined above.
console.log(`${client.sessionId} sent ${type} ${message}`);
});
this.onMessage("echo", (client: SandboxPlayer, message: number) => {
// Send message to sender
client.send("echo", `echo message: ${message}`);
});
this.onMessage("fire", (client: SandboxPlayer, message: string) => {
// Sends "fire" event to every client, except the one who triggered it.
this.broadcast("fire", message, { except: client });
});
this.onMessage("position", (client: SandboxPlayer, message) => {
console.log(`[${client.sessionId}] position: (${message.x}, ${message.y}, ${message.z})`);
});
// When Custom object "MessageModel" type of message is sent.
this.onMessage<MessageModel>('channel_object', (client: SandboxPlayer, message: MessageModel) => {
console.log(`[${client.sessionId}] message type: ${typeof (message)}, message: ${message.str}`);
});
}
}Client
import { Room, RoomData } from 'ZEPETO.Multiplay';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoWorldMultiplay } from 'ZEPETO.World';
interface MessageModel {
str: string,
isTest: boolean
}
export default class ClientLogic extends ZepetoScriptBehaviour {
private multiplay: ZepetoWorldMultiplay;
Start() {
this.multiplay = this.gameObject.GetComponent<ZepetoWorldMultiplay>();
this.multiplay.RoomJoined += (room: Room) => {
// [room.Send]
// Send "action" message to server
room.Send("action", "action message");
// Send "message" message to server
room.Send("message", "hello");
// Send "echo" message to server
room.Send("echo", 1234);
// Send RoomData "posData" message to server
const posData = new RoomData();
posData.Add("x", this.transform.position.x);
posData.Add("y", this.transform.position.y);
posData.Add("z", this.transform.position.z);
room.Send("position", posData.GetObject());
// Send Custom object "MessageModel" to server
let message = {str:'test', isTest: true} as MessageModel;
room.Send("channel_object", message);
// [room.AddMessageHandler]
// Add server message listener type by "echo"
room.AddMessageHandler("echo", (message: string) => {
// Print server message
console.log(message);
});
// Add server message listener type by "action-taken"
room.AddMessageHandler("action-taken", (message: string) => {
// print server message
console.log(message);
});
// Add server message listener type by "fire"
room.AddMessageHandler("fire", (message: string) => {
// Print server message
console.log(message);
});
};
}
}