aboutsummaryrefslogtreecommitdiff
path: root/doc/api.org
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api.org')
-rw-r--r--doc/api.org23
1 files changed, 12 insertions, 11 deletions
diff --git a/doc/api.org b/doc/api.org
index 25eb9a0..bfabd40 100644
--- a/doc/api.org
+++ b/doc/api.org
@@ -4,8 +4,14 @@
#+LATEX_HEADER: \usepackage{fullpage}
* General Description
- - All transmissions will be based on UDP
- - All UDP packet will contain plain json data
+ - All transmissions will be based on TCP because:
+ - Packet length are not fixed
+ - Packet ordering is important
+ - All TCP stream from *client to server* will:
+ - Contain plain json data
+ - Be terminated by a "#EOF" line (in order for the server to detect the end of the request
+ - All TCP stream from *server to client* will contains plai json data (connection will be closed by the server
+ so there is no need of "#EOF".
* Communications
** Initialisation
1. Server wait for a client
@@ -14,36 +20,33 @@
{
"type": "new-game"
}
+ #EOF
#+END_SRC
3. Server can reply:
#+BEGIN_SRC json
{
"type": "state",
- "syn": 1,
"game-id": 1,
"game-over": false,
"snake": [[1,2],[1,3]],
"food": [[6,7]]
}
#+END_SRC
- Note that, syn entry is used to keep packet ordering consistent and detecting packet inversion on the network. Thus,
- syn entry indicate the expected syn that the client should send on the next UDP packet.
** Gameplay
*** Change Direction
1. When client is playing a game it can ask to the server to change snake direction:
#+BEGIN_SRC json
{
"type": "update",
- "syn": 1,
"game-id": 1,
"direction": "left",
}
+ #EOF
#+END_SRC
2. Server can reply
#+BEGIN_SRC json
{
"type": "state",
- "syn": 2,
"game-id": 1,
"game-over": false,
"snake": [[0,2],[1,2]],
@@ -55,16 +58,15 @@
#+BEGIN_SRC json
{
"type": "update",
- "syn": 2,
"game-id": 1,
"direction": null
}
+ #EOF
#+END_SRC
2. Server can reply:
#+BEGIN_SRC json
{
"type": "state",
- "syn": 3,
"game-id": 1,
"game-over": false,
"snake": [[1,2],[0,2]],
@@ -76,11 +78,10 @@
#+BEGIN_SRC json
{
"type": "state",
- "syn": null,
"game-id": 1,
"game-over": true,
"snake": [[0,2],[1,2]],
"food": [[6,7]]
}
#+END_SRC
- - No reply is expected from the client and server will be in charge to free local memory. Note that syn=null.
+ - No reply is expected from the client and server will be in charge to free local memory.