From 921d023a7652be5b1232ac41aeb2646b5f83ceb5 Mon Sep 17 00:00:00 2001 From: natrixaeria Date: Fri, 17 May 2019 20:59:10 +0200 Subject: Add WebSocket server functionality and a WebSocket javascript test suite --- game_server/src/gameserver.rs | 44 +++++++++++++++++++++++++++++ game_server/src/main.rs | 14 +++++++--- game_server/src/ws_test.html | 65 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 game_server/src/ws_test.html (limited to 'game_server/src') diff --git a/game_server/src/gameserver.rs b/game_server/src/gameserver.rs index e69de29..6bc3e07 100644 --- a/game_server/src/gameserver.rs +++ b/game_server/src/gameserver.rs @@ -0,0 +1,44 @@ +use websocket::{OwnedMessage, sync::Server, server::NoTlsAcceptor}; +use std::net::{SocketAddr, ToSocketAddrs}; +use std::sync::mpsc; +use std::sync::mpsc::{Sender, Receiver}; + +#[derive(Debug)] +pub enum GameServerError { + BindError(std::io::Error), +} + +type ClientConnection = Result<(), GameServerError>; + +pub struct GameServer { + addr: SocketAddr, + rec: Receiver, +} + +impl GameServer { + pub fn new(addr: T) -> Self { + let (s, r): (Sender, Receiver) + = mpsc::channel(); + let addr = addr.to_socket_addrs().unwrap().next().unwrap(); + debug!("ws address: {}", addr); + std::thread::spawn(move || { + let server = match Server::::bind(addr) { + Ok(v) => v, + Err(e) => { + s.send(Err(GameServerError::BindError(e))).unwrap(); + return; + }, + }; + info!("webserver is being launched"); + for req in server { + //println!("{:?}", req); + println!("gotcha"); + } + info!("webserver is being shut down"); + }); + GameServer { + addr, + rec: r, + } + } +} diff --git a/game_server/src/main.rs b/game_server/src/main.rs index f7a1085..2d261d8 100644 --- a/game_server/src/main.rs +++ b/game_server/src/main.rs @@ -1,27 +1,33 @@ mod group; mod test_group; mod lobby; +mod gameserver; mod backend_connection; #[macro_use] extern crate log; use pretty_env_logger; -use test_group::TestGroup; use lobby::Lobby; use backend_connection::BackendConnection; fn main() { pretty_env_logger::init(); + info!("create lobby"); let mut lobby = Lobby::new(); + let addr = ("127.0.0.1", 5001); + info!("create game server on {:?}", addr); + let gameserver = gameserver::GameServer::new(addr); for group in lobby.iter() { group.run() } - let mut backend = BackendConnection::new("http://129.13.215.68:5000"); + let mut backend = BackendConnection::new("https://kobert.dev"); loop { - backend.request("/scribble").unwrap(); - println!("{:?}", backend.get_response()); + std::thread::sleep(std::time::Duration::from_millis(1000)); + + //backend.request("/api/lobby/tokens/1230").unwrap(); + //println!("{:?}", backend.get_response()); } } diff --git a/game_server/src/ws_test.html b/game_server/src/ws_test.html new file mode 100644 index 0000000..29d4d50 --- /dev/null +++ b/game_server/src/ws_test.html @@ -0,0 +1,65 @@ + + + + WS Test + + + +
connected

+
+ Server address: +
+ + + -- cgit v1.2.3-54-g00ecf