| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using ConsoleHttp.Model;
- using MqttMsgServer.HttpService.dto;
- using MqttMsgServer.Service.Client;
- using MqttMsgServer.Service.ClientMessage;
- using MqttMsgServer.Service.ClientMessage.Dto;
- using MqttMsgServer.Tools;
- using Newtonsoft.Json;
- namespace MqttMsgServer.HttpService
- {
- public class CustomHttpServer : HttpServerBase
- {
- public CustomHttpServer(int maxThreads) : base(maxThreads)
- {
- }
- protected override void ProcessHttpRequest(HttpListenerContext ctx)
- {
- try
- {
- var url = ctx.Request.Url.AbsolutePath;
- string httpMethod = ctx.Request.HttpMethod.ToLower();
- StreamReader reader = new StreamReader(ctx.Request.InputStream, Encoding.UTF8);
- string content = reader.ReadToEnd();
- this.LogDebug($"http request IP:{ctx.Request.UserHostAddress}----requestUri:{url}-------data:{content}");
- string response = "";
- switch (httpMethod)
- {
- case "get":
- response = "{\"url\":\"" + url + "\"}";
- break;
- case "post":
- response = JsonConvert.SerializeObject(HandlePostRequest(url, content));
- break;
- }
- byte[] buffer = Encoding.UTF8.GetBytes(response);
- ctx.Response.StatusCode = 200;
- ctx.Response.ContentType = "application/json; charset=UTF-8";
- ctx.Response.ContentLength64 = buffer.Length;
- ctx.Response.OutputStream.Write(buffer, 0, buffer.Length);
- ctx.Response.OutputStream.Close();
- ctx.Response.Close();
- }
- catch (Exception e)
- {
- this.LogError($"ProcessHttpRequest has error:"+e.Message);
- }
-
- }
- private ResponseResult HandlePostRequest(string url, string data)
- {
- ResponseResult result = new ResponseResult()
- {
- IsSuccess = false
- };
- if (string.IsNullOrEmpty(data))
- {
- result.ErrorMessage= "参数为空!";
- return result;
- }
- //if (!url.EndsWith("regClient"))
- //{
- // result.ErrorMessage = "资源不存在404!";
- // return result;
- //}
- string lastUrl = url.Substring(url.LastIndexOf('/'));
- lastUrl = lastUrl?.ToLower();
- switch (lastUrl)
- {
- case "/regclient":
- result = RegisterClient(data);
- break;
- case "/querymsg":
- result = QueryMessageInfos(data);
- break;
- case "/countmsg":
- result = CountMessage(data);
- break;
- default:
- result.ErrorMessage = "资源不存在404!";
- return result;
- }
-
- return result;
- }
- /// <summary>
- /// 注册客户端
- /// </summary>
- /// <param name="inputData"></param>
- /// <returns></returns>
- private ResponseResult RegisterClient(string inputData)
- {
- var clientDto = JsonConvert.DeserializeObject<ClientDto>(inputData);
- ClientInfoService cs = new ClientInfoService();
- return cs.AddOrUpdateClient(clientDto);
- }
- /// <summary>
- /// 查询消息信息(消息详情)1.根据查询条件查询(时间范围 客户端 主题 )
- /// </summary>
- /// <returns></returns>
- private ResponseResult QueryMessageInfos(string inputData)
- {
- var inputDto = JsonConvert.DeserializeObject<MsgQueryParamDto>(inputData);
- ClientMessageService cmService = new ClientMessageService();
- return cmService.QueryMsgInfo(inputDto);
- }
- /// <summary>
- /// 统计消息(根据查询条件按时间段分组统计(小时,天,月,年).)
- /// </summary>
- /// <returns></returns>
- private ResponseResult CountMessage(string inputData)
- {
- var inputDto = JsonConvert.DeserializeObject<MsgQueryCount>(inputData);
- ClientMessageService cmService = new ClientMessageService();
- return cmService.CountMsgInfo(inputDto);
- }
- }
- }
|