private void btn_lane_connect_Click(object sender, EventArgs e) { Dictionary <string, string> dic = new Dictionary <string, string> { { "Type", "Client" }, { "Name", text_message_lane_code.Text } }; connection = new HubConnection(text_lane_hub_address.Text, dic); proxy = connection.CreateHubProxy(text_lane_hub_name.Text); connection.Start().Wait(); lane = new Lane(); GetLane_Value(); Pf_Message_Lane_Object lane_obj = new Pf_Message_Lane_Object { lane = this.lane, lane_code = lane.lane_code, send_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; Pf_Message_Obj <Pf_Message_Lane_Object> obj = new Pf_Message_Obj <Pf_Message_Lane_Object>("lane", lane_obj); proxy.Invoke("Change", lane.lane_code, JSONHelper.SerializeObject(obj));//send to messageHub richTextBox1.AppendText(DateTime.Now.ToString() + ":" + "与服务器连接成功" + "\r\n"); connection.StateChanged += Connection_StateChanged; proxy.On("reciveLane", (data) => { Pf_Message_Lane_Object lane_obj_temp = JSONHelper.DeserializeJsonToObject <Pf_Message_Lane_Object>(data); lane = JSONHelper.DeserializeJsonToObject <Lane>(JSONHelper.SerializeObject(lane_obj_temp.lane)); SetLane_Value(); }); }
public void LaneStatusChange(string laneCode, string JsonMessage) { try { Pf_Message_Obj obj = (Pf_Message_Obj)DataHepler.Decoding(JsonMessage); switch (obj.message_type) { case "Status": var statusObj = JsonHelper.DeserializeJsonToObject <pf_MessageStatusContext_Obj>(JsonHelper.SerializeObject(obj.message_content)); if (StatusList.Count(x => x.lane_code == laneCode) > 0) { lock (StatusList) { if (StatusList.Count(x => x.lane_code == statusObj.lane_code) > 0) { statusObj.update_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); StatusList[StatusList.FindIndex(x => x.lane_code == statusObj.lane_code)] = statusObj; //车道对象 if (statusObj.connection_id != "") { var reobj = new Pf_Message_Obj { message_type = "Status", message_content = statusObj }; //编码成消息对象 Clients.Client(statusObj.connection_id).reciveStatus(JsonHelper.SerializeObject(reobj)); //如果有这个客户端就推送给这个客户端 } F5(); //刷新 ReCode = "状态刷新/修改成功"; GetRe(); //服务器返回 ReCode = "无状态"; } } } break; case "Action": var actionObj = JsonHelper.DeserializeJsonToObject <pf_MessageActionContext_Obj>(JsonHelper.SerializeObject(obj.message_content)); if (actionObj.connection_id != "") { var reobj = new Pf_Message_Obj { message_type = "Action", message_content = actionObj }; Clients.Client(actionObj.connection_id).reciveAction(JsonHelper.SerializeObject(reobj)); //返回JSON对象 } break; case "Job": var jobObj = JsonHelper.DeserializeJsonToObject <pf_JobContet_Obj>(JsonHelper.SerializeObject(obj.message_content)); break; } } catch (Exception ex) { ReCode = "状态刷新/修改失败"; GetRe(); Loger.AddErrorText("更新状态失败", ex); } }
private void button1_Click(object sender, EventArgs e) { if (proxy != null) { GetLane_Value(); //从控件中 获取值 Pf_Message_Lane_Object lane_obj = new Pf_Message_Lane_Object { lane = this.lane, lane_code = lane.lane_code, send_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; Pf_Message_Obj <Pf_Message_Lane_Object> obj = new Pf_Message_Obj <Pf_Message_Lane_Object>("lane", lane_obj); proxy.Invoke("Change", lane.lane_code, JSONHelper.SerializeObject(obj));//send to messageHub } }
private void button2_Click(object sender, EventArgs e) { if (proxy != null) { GetLane_Value(); Pf_Message_Lane_Object lane_obj = new Pf_Message_Lane_Object { lane = this.lane, lane_code = lane.lane_code, send_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; Pf_Message_Obj <Pf_Message_Lane_Object> obj = new Pf_Message_Obj <Pf_Message_Lane_Object>("lane", lane_obj); string controllane_code = string.Empty; Invoke(new MethodInvoker(() => { controllane_code = text_message_lane_code.Text; })); proxy.Invoke("SendMessage", controllane_code, JSONHelper.SerializeObject(obj));//send to messageHub } }
void SetLane_Value() { try { Invoke(new MethodInvoker(() => { text_lane_code.Text = lane.lane_code; text_lane_name.Text = lane.lane_name; text_lane_conutry_code.Text = lane.country_code; text_lane_city_code.Text = lane.city_code; text_lane_terminal_code.Text = lane.terminal_code; text_lane_direction.Text = lane.direction; text_lane_has_truck.Text = lane.has_truck == true ? "True" : "False"; text_lane_led_display.Text = lane.led_display; text_lane_barrier.Text = lane.barrier; text_lane_update_time.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); richTextBox1.AppendText(DateTime.Now + ":" + "接收消息并赋值给控件成功" + "\r\n"); })); if (proxy != null) { Pf_Message_Lane_Object lane_obj = new Pf_Message_Lane_Object { lane = this.lane, lane_code = lane.lane_code, send_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; //Pf_Message_Obj obj = new Pf_Message_Obj { message_type = "lane", message_content = lane_obj }; Pf_Message_Obj <Pf_Message_Lane_Object> obj = new Pf_Message_Obj <Pf_Message_Lane_Object>("lane", lane_obj); proxy.Invoke("Change", lane.lane_code, JSONHelper.SerializeObject(obj));//send to messageHub Invoke(new MethodInvoker(() => { richTextBox1.AppendText(DateTime.Now + ":" + "推送至服务器缓存成功" + "\r\n"); })); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "赋值给控件失败"); } }