public static void testWSServer() { RRServer server = new RRServer("ws://0.0.0.0:20001"); server.onMessage += (string arg1, IRRClient arg2) => { Console.WriteLine("server {0}", arg1); arg2.SendMessageAsync(arg1); }; server.onOpen += (IRRClient obj) => { Console.WriteLine("connected ip: {0}, port {1}", obj.address, obj.port); obj.onClose += (RawSocket) => { Console.WriteLine("server side close"); }; }; }
public static void Main(string[] args) { config = JSONParser.ReadConfig(CONFIG_PATH); //чтение файла конфигурации с диска hardwareID = Hardware.GetID(); //идентификатор оборудования строися на основе mac адресов information = new PartStruct() //информация о клиенте отсылается серверу .Add("name", config["name"]) .Add("groupe", config["group"]) .Add("id", hardwareID) .Add("port", config["serverPort"]); receiver = ConfigureReceiver(); commands = ConfigureCommands(); rRServer = ConfigureServer(); Console.ReadKey(); //освобождение ресурсов и завершение программы receiver.Dispose(); rRServer.Dispose(); }
/* * создание сервера принимающего команды с управляющего сервера */ static RRServer ConfigureServer() { //requ {cmd, data: {}} //resp {ok: {message}} //error {error: {message}} RRServer server = new RRServer(String.Format("ws://0.0.0.0:{0}", config["serverPort"].GetValue <UInt16>())); server.onMessage += (string arg1, IRRClient arg2) => { JSONParser inputData = null; try { inputData = new JSONParser(arg1); } catch (Exception err) { arg2.SendMessageAsync("{\"error\": {\"message\": \"bad JSON data\"}}"); return; } Console.WriteLine(inputData.ToJSON()); commands.Execute(inputData["cmd"].GetValue <string>(), new ClientData(arg2, new JSONParser(inputData["data"]))); }; return(server); }
/* * создание websocket сервера * решающего какая команда будет выполнена */ private static void ConfigureRRServer() { //requ {cmd, data: {}} //resp {ok: {message}} //error {error: {message}} server = new RRServer(String.Format("ws://0.0.0.0:{0}", config["server_port"].GetValue <UInt16>())); server.onServerError += (Exception err) => { Console.WriteLine("Server error: {0}", err); }; server.onMessage += (string arg1, IRRClient arg2) => { Console.WriteLine("server: input data {0}", arg1); JSONParser inputData = null; try { inputData = new JSONParser(arg1); } catch (Exception err) { arg2.SendMessageAsync("{\"error\": {\"message\": \"bad JSON data\"}}"); return; } try { commands.Execute(inputData["cmd"].GetValue <string>(), new ClientData(arg2, new JSONParser(inputData["data"]))); } catch (Exception err) { arg2.SendMessageAsync(new PartStruct() .Add("error", new PartStruct() .Add("message", err.Message) ).ToJSON()); } }; server.onOpen += (IRRClient obj) => { Console.WriteLine("connected ip: {0}, port {1}", obj.address, obj.port); }; }