Identification

Once you've logged in, the first thing to do is to identify yourself to the service as a front, target or both as one client : front_and_target.

Identification message

The message to send is of the following structure :

identityAll -> Service

   {
       "type" : "identity",
       "category" : "front",
       "name" : "serveur_x",
       "id_session" : "session_1674"
   }

Tip:
There is no need of waiting for the handshake to identify yourself. The two messages can cross one another.


Content


Field Description
category Gives the wanted identity ; can value :
  • front
  • target
  • front_and_target
name Name of the client : only useful for debugging.
id_session A session is an ensemble of (front/target/front_and_target)clients who can communicate with each other.
Therefore a single server can handle simultaneously several users or different contexts

ID session utility


The sessions allow a single server to behave as multiple servers, by isolating clients using their ID session.
According to that, a front can only interract with the target of his session.

Example - With several users :
If you want several users to use the same server, each user will have his own ID session. In a transparent manner, the user is given the feel to have the exclusive use of the service, he can only interract with the softwares of his session.

Example - With several contexts :
In a voice monitored house, each room can be given a session.
The kitchen microphone will control the kitchen, and the bedroom microphone will control the bedroom.
"Turn on the light" will have a different meaning in each room.


Tip:
The demonstration available on Golem.ai website has one service for all users.
Each user loading the demo page has a specific ID session.


The front_and_target

The front_and_target gives to one only client the capacities of the front and the target.
All the possible messages -to be sent and received- are those of the front and the target combined, as described in their respective sections.
It is usefull when the software or the device to be monitored also embeds the solution receiving the user's orders. (for example like a robot or any electronic object)

Tip:
The front_and_target allows to use one only connection, and can make the the service easier to use under certain conditions
You can also independently connect a front and a target using the same software, to simplify or clarify the program design.


Note :
A front_and_target behaves as if a front and a target were logging in.
Therefore :

  • If other front were to connect to the same session, they would be able to call the interactions of the front_and_target.
  • Il other target were to connect to the same session, the front_and_target would be able to call their interactions.

Confirmation of receipt

In return, the client received from the "confirm_identity" service :

confirm_identityService -> All
   {
       "type" : "confirm_identity",
       "category" : "front",
       "name" : "serveur_x",
       "id_session" : "session_1674"
   }

With the same parameters to the same value. (Simple confirmation.)

API connection address :

TCP : golem.ai:3003
Web Socket : golem.ai:3004/ws
Web Socket Sécurisé (WSS) : golem.ai:3005/ws
HTTP : golem.ai:3004/http
HTTPS : golem.ai:3005/http