/* Простой post запрос */ public async Task<string> SendMessageToServer(Message message) { WebRequest req = WebRequest.Create("http://localhost:45534/message/post"); req.Method = "POST"; req.Timeout = 100000; req.ContentType = "application/json"; byte[] sentData = Encoding.GetEncoding(1251).GetBytes(JsonConvert.SerializeObject(message)); try { Stream sendStream = await req.GetRequestStreamAsync(); await sendStream.WriteAsync(sentData, 0, sentData.Length); sendStream.Close(); WebResponse res =await req.GetResponseAsync(); return "ok"; } catch (Exception) { return "failed"; } }
public async Task SendEcho(string robotNumber) { // создали эхо - сообщение Message message = new Message() { Commands = new List<string>() { "<ECHO>" }, From = "0", To = robotNumber, Text = null }; // оно дошло? bool result = true; /* нужно сказать серверу, что робот онлайн только 1 раз, поэтому нужен флаг */ bool serverKnows = false; while (result) { Thread.Sleep(1000); result = await SendMessageToRobotTask(JsonConvert.SerializeObject(message)); if (result) { Console.WriteLine("Robot is online now"); if (!serverKnows) { Message notificationOn = new Message() { Commands = null, From = robotNumber, Text = "I am online!", To = "0" }; await _serverConnector.SendMessageToServer(notificationOn); serverKnows = true; } } } Console.WriteLine("Robot is offline now"); Message notificationOff = new Message() { Commands = null, From = robotNumber, Text = "I am offline!", To = "0" }; var robot = data.Robots.First(x => x.Number == robotNumber); robot.isOnline = false; await data.UpdateAsync(robot); await _serverConnector.SendMessageToServer(notificationOff); }