// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IAutomaticPostingFactory apFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } //app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); var webSocketOptions = new WebSocketOptions() { KeepAliveInterval = TimeSpan.FromSeconds(120), ReceiveBufferSize = 4 * 1024 }; app.UseWebSockets(webSocketOptions); app.UseCustomWebSocketManager(); //app.AutomaticPostingApp(); string Text = HelperAspNet.Http.HttpGet("http://172.16.1.34:7777/api/GetAutomaticPosting/GetAutomaticPostingAPI"); List <AutomaticPosting> AutomaticPostingList = new List <AutomaticPosting>(); AutomaticPostingList = Text.ConvertToList <AutomaticPosting>(); foreach (AutomaticPosting item in AutomaticPostingList) { Helperlog4.Info("取得未过账数据" + item.ConvertToJson()); apFactory.AutomaticPostingAdd(item); } Helperlog4.Info("取得未过账数据" + AutomaticPostingList.ConvertToJson()); if (AutomaticPostingList.Count == 0) { AutomaticPosting AutomaticPostings = new AutomaticPosting(); AutomaticPostings.id = 0; AutomaticPostings.in_time = null; AutomaticPostings.item_num = null; AutomaticPostings.JobNumber = null; AutomaticPostings.state = 0; AutomaticPostings.Warehouse_ = null; apFactory.AutomaticPostingAdd(AutomaticPostings); } }
/// <summary> /// 处理消息 /// </summary> /// <param name="result"></param> /// <param name="buffer"></param> /// <param name="userWebSocket"></param> /// <param name="wsFactory"></param> /// <returns></returns> public async Task HandleMessage(WebSocketReceiveResult result, byte[] buffer, CustomWebSocket userWebSocket, ICustomWebSocketFactory wsFactory, IAutomaticPostingFactory apFactory) { string msg = Encoding.UTF8.GetString(buffer); try { //var message = JsonConvert.DeserializeObject<CustomWebSocketMessage>(msg); String JSON = msg.Replace("\0", ""); CustomWebSocketMessage message = JSON.ConvertToObject <CustomWebSocketMessage>(); if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.挂工艺数据) { message.Text = HelperAspNet.Http.HttpGet("http://172.16.14.250:7031/MesStationMasterMbjGetApi?StationNo=" + message.Username); string serialisedMessage = JsonConvert.SerializeObject(message); Helperlog4.Info("返回吊挂工艺数据" + serialisedMessage); await BroadcastOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.Username, wsFactory); } else if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.挂模板数据) { message.Text = HelperAspNet.Http.HttpGet("http://172.16.14.250:7030/MesStationMasterAppGetApi?StationNo=" + message.Username); string serialisedMessage = JsonConvert.SerializeObject(message); Helperlog4.Info("返回吊挂吊挂模板数据" + serialisedMessage); await BroadcastOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.Username, wsFactory); } else if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.过账客户端) { message.Text = apFactory.AutomaticPostingAll().ConvertToJson(); string serialisedMessage = JsonConvert.SerializeObject(message); Helperlog4.Info("发送过账客户端" + serialisedMessage); await BroadcastOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.Username, wsFactory); //await BroadcastUserTypeOthers(Encoding.UTF8.GetBytes(serialisedMessage), UserType.过账客户端, wsFactory); } else if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.过账数据端) { if (message.Text == "Update") { message.Text = HelperAspNet.Http.HttpGet("http://172.16.1.34:7777/api/GetAutomaticPosting/GetAutomaticPostingAPI"); List <AutomaticPosting> AutomaticPostingList = new List <AutomaticPosting>(); AutomaticPostingList = message.Text.ConvertToList <AutomaticPosting>(); foreach (AutomaticPosting item in AutomaticPostingList) { apFactory.AutomaticPostingAdd(item); } Helperlog4.Info("添加过账数据端" + AutomaticPostingList.ConvertToJson()); } else if (message.Text == "Get") { List <AutomaticPosting> AutomaticPostingList = new List <AutomaticPosting>(); AutomaticPostingList = apFactory.AutomaticPostingAll(); message.Text = AutomaticPostingList.ConvertToJson(); string serialisedMessage = JsonConvert.SerializeObject(message); await BroadcastUserTypeOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.UserType, wsFactory); Helperlog4.Info("过账数据端Get" + serialisedMessage); } } else if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.过账数据添加端) { List <AutomaticPosting> AutomaticPostingList = new List <AutomaticPosting>(); AutomaticPostingList = message.Text.ConvertToList <AutomaticPosting>(); foreach (AutomaticPosting item in AutomaticPostingList) { apFactory.AutomaticPostingAdd(item); } string serialisedMessage = JsonConvert.SerializeObject(message); Helperlog4.Info("过账数据添加端" + serialisedMessage); await BroadcastUserTypeOthers(Encoding.UTF8.GetBytes(serialisedMessage), UserType.过账客户端, wsFactory); } else if (message.Type == EnumModel.WSMessageType.发送 && message.UserType == UserType.过账数据删除端) { List <AutomaticPosting> AutomaticPostingList = new List <AutomaticPosting>(); AutomaticPostingList = message.Text.ConvertToList <AutomaticPosting>(); foreach (AutomaticPosting item in AutomaticPostingList) { apFactory.AutomaticPostingRemove(item); Helperlog4.Info("过账数据删除端" + message.Username + " 删除服务器内存数据" + JsonConvert.SerializeObject(item)); } string serialisedMessage = JsonConvert.SerializeObject(message); await BroadcastUserTypeOthers(Encoding.UTF8.GetBytes(serialisedMessage), UserType.过账客户端, wsFactory); Helperlog4.Info("过账数据删除端" + message.Username + "给过账客户端返回数据完成!" + serialisedMessage); } else if (message.Type == WSMessageType.登陆) { await userWebSocket.WebSocket.SendAsync(new ArraySegment <byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None); } else if (message.Type == WSMessageType.重连) { // string serialisedMessage = JsonConvert.SerializeObject(message); // await BroadcastOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.Username, wsFactory); } //if (message.Type == WSMessageType.发送 || message.Type == WSMessageType.重连) //{ // string serialisedMessage = JsonConvert.SerializeObject(message); // await BroadcastOthers(Encoding.UTF8.GetBytes(serialisedMessage), message.Username, wsFactory); //} } catch (Exception e) { await userWebSocket.WebSocket.SendAsync(new ArraySegment <byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None); } }