From bf956c78ee352fe37898c7ae781894c38eb4a69a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 29 Jul 2014 23:03:55 +0200 Subject: [PATCH] update mobile API --- doc/mobile-api.md | 12 +++++++++--- modules/lobby/src/main/Socket.scala | 25 +++++++++++-------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/doc/mobile-api.md b/doc/mobile-api.md index dc83a9d830b3a..f4a094ea9ada6 100644 --- a/doc/mobile-api.md +++ b/doc/mobile-api.md @@ -84,7 +84,7 @@ First you need to connect to the lobby websocket, from which you'll receive the var clientId = Math.random().toString(36).substring(2); // created and stored by the client var socketVersion = 0; // last message version number seen on this socket. Starts at zero. -var socketUrl = 'http://socket.en.l.org:9021/lobby/socket?sri=' + clientId + '&version=' + socketVersion; +var socketUrl = 'http://socket.en.l.org:9021/lobby/socket?mobile=1&sri=' + clientId + '&version=' + socketVersion; var socket = new WebSocket(socketUrl); ``` @@ -103,9 +103,15 @@ Response: `200 OK` ok ``` -Now you're waiting for someone to accept the seek. The response will come as a socket message. +Now you're waiting for someone to accept the seek. The response will come as a socket message: -#### FIXME - document lobby socket +```javascript +// the seek was accepted +{ + "t": "redirect", // means we should move on to the game + "id": "abcdefgh1234" +} +``` ## Fetch a game as a player (POV) diff --git a/modules/lobby/src/main/Socket.scala b/modules/lobby/src/main/Socket.scala index 4468dc1f2c4e8..2cc738d0c1781 100644 --- a/modules/lobby/src/main/Socket.scala +++ b/modules/lobby/src/main/Socket.scala @@ -51,26 +51,23 @@ private[lobby] final class Socket( case RemoveHook(hookId) => notifyVersion("hook_remove", hookId) case JoinHook(uid, hook, game, creatorColor) => - playerUrl(game fullIdOf creatorColor) zip - playerUrl(game fullIdOf !creatorColor) foreach { - case (creatorUrl, invitedUrl) => - withMember(hook.uid)(notifyMember("redirect", Json.obj( - "url" -> creatorUrl, - "cookie" -> AnonCookie.json(game, creatorColor) - ).noNull)) - withMember(uid)(notifyMember("redirect", Json.obj( - "url" -> invitedUrl, - "cookie" -> AnonCookie.json(game, !creatorColor) - ).noNull)) - } + withMember(hook.uid)(notifyMember("redirect", Json.obj( + "id" -> (game fullIdOf creatorColor), + "url" -> playerUrl(game fullIdOf creatorColor), + "cookie" -> AnonCookie.json(game, creatorColor) + ).noNull)) + withMember(uid)(notifyMember("redirect", Json.obj( + "id" -> (game fullIdOf !creatorColor), + "url" -> playerUrl(game fullIdOf !creatorColor), + "cookie" -> AnonCookie.json(game, !creatorColor) + ).noNull)) case HookIds(ids) => notifyVersion("hook_list", ids) case lila.hub.actorApi.StreamsOnAir(html) => notifyAll(makeMessage("streams", html)) } - private def playerUrl(fullId: String) = - router ? Player(fullId) mapTo manifest[String] + private def playerUrl(fullId: String) = s"/$fullId" private def notifyTournaments(html: String) { notifyAll(makeMessage("tournaments", html))