void DisplayMessage(AddMessageEventArgs e) { StringBuilder text = new StringBuilder(); foreach (MessageRecord record in e.Records) { text.Append("***\r\n"); text.Append("action=" + e.Action + "\r\n"); text.Append("id=" + record.id + "\r\n"); text.Append("data=" + record.data + "\r\n"); if (record.groups != null) { text.Append("groups=" + HttpUtility.HtmlEncode(string.Join(",", record.groups)) + "\r\n"); } text.Append("creator=" + record.creator + "\r\n"); text.Append("userName="******"\r\n"); text.Append("format=" + record.format + "\r\n"); text.Append("type=" + record.type + "\r\n"); text.Append("thread=" + record.thread + "\r\n"); text.Append("publishTime=" + record.publishTime + "\r\n"); text.Append("expireTime=" + record.expireTime + "\r\n"); } AppendHtml(this.webBrowser1, text.ToString()); }
// 这里挂接的事件,只用于发送模式时显示。当前为接收模式时,这个事件被忽略 void _channels_AddMessage(object sender, AddMessageEventArgs e) { if (_mode == "sender") { this.BeginInvoke(new Action <AddMessageEventArgs>(DisplayMessage), e); } }
public virtual void OnAddMessageRecieved(string action, IList <MessageRecord> messages) { AddMessageEventArgs e = new AddMessageEventArgs(); e.Action = action; e.Records = new List <MessageRecord>(); e.Records.AddRange(messages); this.TriggerAddMessage(this, e); }
/// <summary> /// 添加信息 /// </summary> /// <param name="sender">发送者</param> /// <param name="args">添加信息参数</param> private async void AddMessage(object sender, AddMessageEventArgs args) { Topic currentTopic = GetTopicByName(args.TopicName); //移动话题位置 await MoveTopic(currentTopic); TopicController topicController = await GetTopicController(currentTopic); //调用对应话题添加消息方法 await topicController.AddMessage(args.Message); }
// 触发消息通知事件 public virtual void TriggerAddMessage(P2PConnection connection, AddMessageEventArgs e) { AddMessageEventHandler handler = this.AddMessage; if (handler != null) { handler(connection, e); } }
private void ReloadMessage(object sender, AddMessageEventArgs e) { foreach (SplitContainer splitContainer in splitContainersList) { if (Convert.ToInt32(splitContainer.Tag) == e.TopicId) { splitContainer.Panel1.Controls.Clear(); foreach (UcMessage messageTopic in ObjManagerMessage.BuildMessageList(e.TopicId)) { splitContainer.Panel1.Controls.Add(messageTopic); } } } }
void AddMessage(AddMessageEventArgs e) { foreach (MessageRecord record in e.Records) { AddTimeLine(record); // creator 要替换为用户名 this.AddMessageLine( IsMe(record) ? "right" : "left", string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName, record.data); _lastMessage = record; } }
void _channels_AddMessage(object sender, AddMessageEventArgs e) { if (e.Action != "create") { return; } lock (_syncRoot_messageList) { // 累积太多了就不送入 list 了,只是激活线程等 GetMessage() 慢慢一百条地处理 if (this._messageList.Count < 10000) { this._messageList.AddRange(e.Records); } } this.Activate(); }
/// <summary> /// 接收分析提醒方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Message(object sender, AddMessageEventArgs e) { if (e.mess == "OK") { isok = true; this.Dispatcher.Invoke(new Action(() => { TextBlock1.Text = "正常工作中..."; })); } else if (e.mess == "Error") { this.Dispatcher.Invoke(new Action(() => { TextBlock1.Text = "正在连接服务器,请稍等..."; })); isok = false; SartFind(); } else { this.Dispatcher.Invoke(new Action(() => { if (e.mess == "分线提醒") { AKRemindOK(); } else { if (show != null) { show.Close(); } } })); } }
/// <summary> /// 接收分析提醒方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Message(object sender, AddMessageEventArgs e) { if (!string.IsNullOrEmpty(e.mess)) { //客户端退出后将连接数据重置 if (e.mess.Contains("AK")) { var ip = e.mess.Replace("AK", ""); if (akremind.Any(x => x.IP == ip)) { akremind.Remove(akremind.First(x => x.IP == ip)); } } else { if (akremind.Any(x => x.IP == e.mess)) { akremind.Remove(akremind.First(x => x.IP == e.mess)); } akremind.Add(new AkNetworkModel { IP = e.mess }); } this.Dispatcher.Invoke(new Action(() => { TextBlock8.Text = string.Format("客户端连接数:{0}", akremind.Count); TextBlock23.Text = string.Empty; foreach (var akRemindModel in akremind) { TextBlock23.Text += akRemindModel.IP + "\r\n"; } SendMess("OK"); })); } }
// TODO: 对不是当前群组的消息,要更新左侧群名列表右侧的新消息数显示 async Task AddMessage(AddMessageEventArgs e) { // TODO: fragment 消息是否能处理? foreach (MessageRecord record in e.Records) { UpdateGroupNameList(record.groups); // 忽略不是当前群组的消息 if (GroupNameContains(record.groups, _currentGroupName) == false) { continue; } AddTimeLine(record); // creator 要替换为用户名 this.AddMessageLine( IsMe(record) ? "right" : "left", string.IsNullOrEmpty(record.userName) ? GetShortUserName(record.creator) : record.userName, record.data); _lastMessage = record; } }
void MessageHub_AddMessage(object sender, AddMessageEventArgs e) { this.BeginInvoke(new Action<AddMessageEventArgs>(AddMessage), e); }
// 触发消息通知事件 public virtual void TriggerAddMessage(MessageConnection connection, AddMessageEventArgs e) { AddMessageEventHandler handler = this.AddMessage; if (handler != null) { handler(connection, e); } }
public virtual void OnAddMessageRecieved(string action, IList<MessageRecord> messages) { AddMessageEventArgs e = new AddMessageEventArgs(); e.Action = action; e.Records = new List<MessageRecord>(); e.Records.AddRange(messages); this.TriggerAddMessage(this, e); }
void MessageHub_AddMessage(object sender, AddMessageEventArgs e) { this.BeginInvoke(new Action <AddMessageEventArgs>(AddMessage), e); }
static void _channels_AddMessage(object sender, AddMessageEventArgs e) { }
// 接管新增消息事件 void _channels_AddMessage(object sender, AddMessageEventArgs e) { if (e.Action != "create") { return; } MessageConnection connection = (MessageConnection)sender; // 这一断没太看懂,只有通道名为_traceMessage才处理吗 if (connection.Name != dp2WeiXinService.C_ConnName_TraceMessage) { return; } // 合并消息 List <MessageRecord> fullRecords = new List <MessageRecord>(); if (e.Records.Count > 0) { foreach (MessageRecord record in e.Records) { // 检查尺寸有没有超过限制 if (_msgBuffer.Length + record.data.Length > C_StringBuffer_MaxLength) { dp2WeiXinService.Instance.WriteErrorLog("消息尺寸超过1M,不处理该消息。"); _msgBuffer.Clear();//消空消息缓存 return; } // 中间的片断消息 if (string.IsNullOrEmpty(record.id) == true) { _msgBuffer.Append(record.data); continue; } // 收尾消息 _msgBuffer.Append(record.data); //串上自己的data record.data = _msgBuffer.ToString(); //设上完整的data fullRecords.Add(record); //设为正式的消息 _msgBuffer.Clear(); //消空消息缓存 } } // 有完整的消息才加到数组里 if (fullRecords.Count > 0) { lock (_syncRoot_messageList) { // 累积太多了就不送入 list 了,只是激活线程等 GetMessage() 慢慢一百条地处理 if (this._messageList.Count < 10000) { this._messageList.AddRange(fullRecords);//e.Records); } } dp2WeiXinService.Instance.WriteDebug2("AddMessage得到" + fullRecords.Count.ToString() + "条消息。"); // 收到消息后,触发线程处理,即会走到worker里 this.Activate(); } }