49 lines
1.2 KiB
D
49 lines
1.2 KiB
D
module doodul.app;
|
|
|
|
import core.time : Duration;
|
|
|
|
import vibe.vibe;
|
|
|
|
import doodul.lobby;
|
|
import doodul.game;
|
|
import doodul.wordlist;
|
|
|
|
void main()
|
|
{
|
|
auto router = new URLRouter;
|
|
router.get("/", &index);
|
|
router.get("/lobby/:id/joinability", &getLobbyJoinability);
|
|
router.get("/lobby/:id", &lobbyGet);
|
|
router.post("/lobby/:id", &lobbyPost);
|
|
router.get("/game/:id", &gameGet);
|
|
router.post("/game/:id", &gamePost);
|
|
router.get("/ws/lobby/:id", handleWebSockets(&wsLobby));
|
|
router.get("/ws/game/:id", handleWebSockets(&wsGame));
|
|
|
|
auto staticFileSettings = new HTTPFileServerSettings;
|
|
staticFileSettings.maxAge = Duration.zero;
|
|
router.get("/js/*", serveStaticFiles("./", staticFileSettings));
|
|
|
|
auto settings = new HTTPServerSettings;
|
|
settings.port = 8080;
|
|
settings.webSocketPingInterval = 10.seconds;
|
|
listenHTTP(settings, router);
|
|
|
|
runApplication();
|
|
}
|
|
|
|
void index(HTTPServerRequest request, HTTPServerResponse response)
|
|
{
|
|
auto nickname = request.cookies.get("nickname", defaultWordList.getRandomNickname());
|
|
auto lobbyId = request.query.get("lobbyId", defaultWordList.getRandomLobbyId());
|
|
|
|
response.render!("index.dt", nickname, lobbyId);
|
|
}
|
|
|
|
struct WebSocketMessage
|
|
{
|
|
string type;
|
|
Json data;
|
|
}
|
|
|