aboutsummaryrefslogtreecommitdiff
path: root/doc/api.org
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-05-10 08:51:16 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-05-10 08:51:16 +0200
commitb35687d51b56c2aafdb6ec5243c53d33b749a933 (patch)
tree4f7633ad62e07521d915368da9cc2acc9f6c8b86 /doc/api.org
parent409897562cfb59a7181226fb3b60f216f9032e9e (diff)
Update API
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.