Game Messages v7 - nodeGame/nodegame GitHub Wiki
- status: complete
- version: 7.x
A game message is the fundamental data unit exchanged by node instances.
It is is composed of the following fields:
// A random generated unique id.
id: 735605,
// The session id as communicated by the server
// upon connection. Messages with a wrong session
// id will not be delivered.
session: "2614842012990266",
// The id of the client were the message was generated.
from: "435250987065956",
// The action field: "say", "set", or "get".
action: "say",
// The target field (see below for all accepted values).
target: "DATA",
// The client id of the recipient of the message.
to: "ID"
// The game stage during which the message was created.
stage: GameStage {
stage: 1,
step: 1,
round: 1
},
// An optional field containing
data: Array[4],
// The timestamp of the creation.
created: "8-11-2014 13:28:47 898",
// A flag indicating whether this messages was forwarded.
forward: 0,
// The priority of the message. High priority
// messages are fired also when the game is paused.
priority: 0,
// A flag indicating whether an acknowledgment of
// the reception is requested. (NOT USED AT THE MOMENT).
reliable: 1The TO field is a string with the client id or client id alias of the receiver. It can also accept the following special values:
-
ALL: Delivers to all clients in all channels. -
CHANNEL: Delivers to all clients connected to the same channel as the sender. -
ROOM: Delivers to all clients connected to the same room as the sender. -
CHANNEL_channel_name: Delivers to all clients in the channel with namechannel_name. -
ROOM_room_id: Delivers to all clients in the room with idroom_id.
The TO field can be modified by the server if the sender does not have the permissions to send a message to a particular recipient or set of recipients.
The TARGET field specifies the semantic meaning of the message. It can contain the following values:
-
HI: Welcome message by the server upon successful connection. -
DATA: Generic data message. -
REDIRECT: Message will redirect the client to a new URL. -
ALERT: An alert message will be displayed in the client window. -
PLAYER_UPDATE: Message containing an update from a player (e.g. change of state or stage levels). -
LANG: Message will set the default language of the client. -
SETUP: Message will setup one or more features of the client. -
GAMECOMMAND: Message will execute a game command: "start", "stop", etc. -
SERVERCOMMAND: A client is invoking a server command. -
PCONNECT: A new player connected in the same room. -
PDISCONNECT: A player disconnected from the same room. -
PRECONNECT: A previously disconnected player reconnected. -
MCONNECT: An administrator client (monitor) connected in the same room. -
MDISCONNECT: An administrator client (monitor) disconnected from the same room. -
PRECONNECT: A previously disconnected administrator (monitor) reconnected. -
PLIST: Message containing an updated player list. -
MLIST: Message containing an updated admin (monitor) list.
The server will ignore the message if the client does not have the permission
for a specific target.
By default, players can send only DATA and PLAYER_UPDATE messages.
To create a custom game message, you can use the method
node.msg.create. All the game message's properties that are not
specified are set to their default values.
// Creating a _DATA_ message.
var myMsg = node.msg.create({
to: 'receiver',
text: 'myData',
data: [ 0, 1, 2, 3 ]
});
// Show all default fields.
console.log(myMsg);
GameMsg {
id: 735605,
session: "2614842012990266",
from: "435250987065956",
action: "say",
target: "DATA",
to: "receiver",
text: "myData",
data: Array[4],
stage: GameStage {},
created: "8-11-2014 13:28:47 898",
forward: 0,
priority: 0,
reliable: 1
}Once created, a message can be sent using the node.socket.send method which
takes the game message as the input parameter.
// Sending the _DATA_ message previously created to 'receiver'.
node.socket.send(myMsg);The nodeGame server will then check the permissions of the sender before delivering the message.