private void AddMsgToOutputBox(IMMessage imMessage) { Buddy sender = imMessage.Sender; string senderName = null; if (sender != null) { CommunityMember member = this.CurrentSessionTabItem.CommunitySession.Community.Members.FindMember(sender.Uin); if (member != null) { senderName = member.CombineName; } else { senderName = sender.CombineName; } } this.OutputBox.AddMsgToOutputBox(imMessage, senderName, null); IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity); if (blockURLWarningMsg != null) { this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null); } }
public void AddMsg(InstanceAnswerPro.Core.Buddy sender, DateTime time, MessagePack messagePack) { IMMessage message = new IMMessage(sender, time, messagePack); this.imMessageList.Add(message); if (this.MessageAdded != null) { this.MessageAdded(this, null); } }
public void loadArchiveSelectedUserDate(string selectedUser, string search, string date) { String HTMLResult = "<p></p>"; if (this.InvokeRequired) { BeginInvoke(new loadArchiveSelectedUserDateDelegate(loadArchiveSelectedUserDate), new object[] { selectedUser, search }); return; } ResetHTML(); Emoticons myEmoticons = new Emoticons(Directory.GetCurrentDirectory() + "\\Emoticons\\"); List <Remwave.Client.Storage.StorageMessage> list = mStorage.GetMessageFromArchiveByDate(selectedUser, search, 2048, date); for (int i = list.Count - 1; i >= 0; i--) { JabberUser jabberUser = null; MessageStyle incomingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Red); MessageStyle outgoingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Blue); MessageTemplateType template = MessageTemplateType.Notification; MessageStyle style = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray); String messageHTML = ""; if (list[i].ContentHTML != "") { messageHTML = list[i].ContentHTML; } else { messageHTML = list[i].ContentText; } //Compatibility with legacy text only messages if (list[i].Direction == StorageItemDirection.In) { style = incomingStyle; template = MessageTemplateType.In; jabberUser = new JabberUser(list[i].JID); } else { style = outgoingStyle; template = MessageTemplateType.Out; jabberUser = new JabberUser(mStorage.Username); } IMMessage message = new IMMessage(jabberUser.Nick, messageHTML, list[i].GUID, list[i].Created, style, template, myEmoticons); HTMLResult += message.HTML; } wbConversation.Document.Body.InnerHtml += HTMLResult; }
void fileDownload_UploadProgressChanged(object sender, EventArgs e) { SharedFile sharedFile = (SharedFile)sender; ChatSession tmplChatSession = (ChatSession)myChatSessions[sharedFile.ToJID]; if (tmplChatSession != null) { tmplChatSession.ChatBox.SetLink(IMMessage.NormalizeGUID(sharedFile.ID), sharedFile.Size.ToString() + " " + (sharedFile.Offset / sharedFile.Size), true); } }
void fileDownload_DownloadProgressChanged(object sender, EventArgs e) { SharedFile sharedFile = (SharedFile)sender; ChatSession tmplChatSession = (ChatSession)myChatSessions[sharedFile.FromJID]; if (tmplChatSession != null) { tmplChatSession.ChatBox.SetLink(IMMessage.NormalizeGUID(sharedFile.ID), sharedFile.FileName.ToString() + " " + sharedFile.GetSizeFormated() + " (" + (100 * sharedFile.Offset / sharedFile.Size) + @"%)", true); } }
void ShowMsg(IMMessage msg) { if (msg.messageType == MessageBodyType.TXT) { recvMsgText.text = "收到文本:" + ((TextMessage)msg).content + "\n" + recvMsgText.text; } else { recvMsgText.text = "收到语音:" + ((AudioMessage)msg).recognizedText + "\n" + recvMsgText.text; } }
private void AddMsgToOutputBox(IMMessage imMessage) { string senderName = (imMessage.Sender != null) ? imMessage.Sender.NickName : null; this.OutputBox.AddMsgToOutputBox(imMessage, senderName, new InputBox.AddMsgToOutputBoxCallBackHandler(this.AddMsgToOutputBoxCallBack)); IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity); if (blockURLWarningMsg != null) { this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null); } }
internal void IncomingMessage(String jid, String messageText, String messageHTML) { if (messageText != "" || messageHTML != "") { JabberUser jabberUser = new JabberUser(jid); IMMessage messageIncoming = new IMMessage(jabberUser.Nick, messageText, Guid.NewGuid().ToString(), "", new MessageStyle(), MessageTemplateType.Incoming, null); AddToConversation(jid, jid, messageIncoming.Text, messageIncoming.HTML, messageIncoming.Time, messageIncoming.ID, false, true); myClientForm.myStorage.AddMessageToArchive(jid, myClientForm.myStorage.StorageGUID(), messageIncoming.Text, messageIncoming.HTML, false); SetComposing(false, jid); #if (TRACE) Console.WriteLine("IM-Message:" + "(" + jid + ")" + messageIncoming.Text); #endif } }
private void RefreshOutputBox() { if (this.CurrentSessionTabItem != null) { this.CurrentSessionTabItem.HasNewMessage = false; ArrayList iMMessageList = this.CurrentSessionTabItem.IMMessageList; int count = iMMessageList.Count; for (int i = this.CurrentSessionTabItem.MessageIndex; i < count; i++) { IMMessage imMessage = (IMMessage)iMMessageList[i]; this.AddMsgToOutputBox(imMessage); } this.CurrentSessionTabItem.MessageIndex = count; } ConversationModule.FlashConversationWindow(this); }
private void SendMessage() { ChatSession tmplChatSession = (ChatSession)myChatSessions[myChatSessionsTabControl.SelectedTab.Tag]; if (tmplChatSession != null) { IMMessage messageOutgoing = new IMMessage(tmplChatSession.JabberUser.Nick, tmplChatSession.ChatTabMessage.Text, Guid.NewGuid().ToString(), "", tmplChatSession.OutgoingStyle, MessageTemplateType.Outgoing, null); if (!myClientForm.SendMessage(tmplChatSession.JabberUser, messageOutgoing.Text, messageOutgoing.HTML)) { return; } AddToConversation(tmplChatSession.JabberUser.JID, myClientForm.mUserAccount.JabberUser.JID, tmplChatSession.ChatTabMessage.Text, "", "", Guid.NewGuid().ToString(), false, false); tmplChatSession.ChatTabMessage.Text = ""; } }
private void SendMessage() { ChatSession tmplChatSession = (ChatSession)myChatSessions[myChatSessionsTabControl.SelectedTab.Tag]; if (tmplChatSession != null) { if ((myClientForm.myBuddyPresence[tmplChatSession.JabberUser.JID] == null || (int)myClientForm.myBuddyPresence[tmplChatSession.JabberUser.JID] == 0)) { if (!tmplChatSession.OfflineMessageNotified) { tmplChatSession.OfflineMessageNotified = true; AddNotification( tmplChatSession.JabberUser.JID, "INFO", Properties.Localization.txtChatInfoUserOfflineMessage, DateTime.Now, Guid.NewGuid().ToString(), false, true ); } } else { tmplChatSession.OfflineMessageNotified = false; } IMMessage messageOutgoing = new IMMessage(tmplChatSession.JabberUser.Nick, tmplChatSession.ChatBox.ChatTabMessage.Text, Guid.NewGuid().ToString(), DateTime.Now, tmplChatSession.OutgoingStyle, MessageTemplateType.Outgoing, null); if (!myClientForm.SendMessage(tmplChatSession.JabberUser, messageOutgoing.Text, messageOutgoing.HTML)) { return; } AddToConversation(tmplChatSession.JabberUser.JID, myClientForm.mUserAccount.JabberUser.JID, tmplChatSession.ChatBox.ChatTabMessage.Text.Trim().Replace(@"&", @"&").Replace(@"<", @"<").Replace(@">", @">"), "", DateTime.Now, Guid.NewGuid().ToString(), false, false ); tmplChatSession.ChatBox.ChatTabMessage.Text = ""; } }
void OnReceiveMessage(IMMessage msg) { if (msg.messageType == MessageBodyType.Voice) { var audioMsg = (AudioMessage)msg; ShowMsg(audioMsg); Log2UI("下载语音文件"); audioMsg.Download((code, audiMsgObj) => { Log2UI("播放接收到的语音消息"); audiMsgObj.Play(null); }); } else if (msg.messageType == MessageBodyType.TXT) { ShowMsg(msg); } }
private void CheckNewMsg() { string queryString = WebUtils.GetQueryString("chattype"); int num = 0; if (queryString == "manager") { AccountInfo loginAccount = Account.GetLoginAccount(); if (loginAccount != null) { num = loginAccount.AutoID; } } else if (queryString == "user") { num = base.UserID; } base.Response.Write(IMMessage.HasNewMessage(queryString, num)); }
public void OnRecvMessage(MessageInfoBase message) { if (IMClient.Instance.ReceiveMessageListener != null) { IMMessage messageObj = null; switch (message.MessageType) { case MessageBodyType.TXT: { var txtMsg = (YIMEngine.TextMessage)message; var msg = new TextMessage(message.SenderID, message.RecvID, (ChatType)message.ChatType, txtMsg.Content, true); msg.sendTime = (uint)message.CreateTime; msg.sendStatus = SendStatus.Sended; messageObj = msg; } break; case MessageBodyType.Voice: { var voiceMsg = (YIMEngine.VoiceMessage)message; var msg = new AudioMessage(message.SenderID, voiceMsg.RecvID, (ChatType)message.ChatType, voiceMsg.Param, true); msg.recognizedText = voiceMsg.Text; msg.audioDuration = voiceMsg.Duration; msg.sendTime = (uint)message.CreateTime; msg.sendStatus = SendStatus.Sended; messageObj = msg; } break; default: Log.e("unknown message type:" + message.MessageType.ToString()); break; } if (messageObj != null) { messageObj.requestID = message.RequestID; IMClient.Instance.ReceiveMessageListener(messageObj); } } }
private void AddMsgToOutputBoxCallBack(IMMessage imMessage, object element) { if (!imMessage.AvatarProcessed) { SysFaceElement element2 = element as SysFaceElement; imMessage.AvatarProcessed = true; if ((element2.Index == 11) && (imMessage.Sender.Uin == this.CurrentIMSession.Buddy.Uin)) { //this.PlayAvatar("Bama.QQ.Controls.AvatarFire"); } else if (element2.Index == 0x26) { if (imMessage.Sender.Uin != this.CurrentIMSession.Buddy.Uin) { //this.PlayAvatar("Bama.QQ.Controls.AvatarHammer"); } else if (base.WindowState == WindowState.Normal) { //base.BeginStoryboard(base.FindResource("big_hammer") as Storyboard); //base.BeginStoryboard(base.FindResource("beaten") as Storyboard); } } } }
public void AddNotification(String jid, String senderEvent, string messageText, string messageDateTime, string messageGUID, bool flashWindow) { if (InvokeRequired) { this.Invoke(new AddNotificationDelegate(this.AddNotification), new object[] { jid, senderEvent, messageText, messageDateTime, messageGUID, flashWindow }); return; } //IMMessage parameters MessageStyle style = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray); MessageTemplateType template = MessageTemplateType.Notification; ChatSession tmplChatSession = (ChatSession)myChatSessions[jid]; switch (senderEvent) { case "INFO": senderEvent = ""; myClientForm.myNotifyIcon.ShowBalloonTip(10, jid, messageText, ToolTipIcon.Info); break; case "CLIENT": case "SERVER": case "PRESENCE": case "BUDDYUPDATE": senderEvent = Properties.Localization.txtChatInfoSenderSystem; break; case "NUDGE": senderEvent = ""; myClientForm.myClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingNudge); FlashWindow(this.Handle, true); #region Shake Window Random rand = new Random(); int left = this.Left; int top = this.Top; for (int i = 0; i < 30; i++) { int randLeft = rand.Next(-10, 10); int randTop = rand.Next(-10, 10); this.Left = (left + randLeft) > 0 ? left + randLeft : 0; this.Top = (top + randTop) > 0 ? left + randLeft : 0; Thread.Sleep(50); } this.Left = left; this.Top = top; #endregion break; case "INVITE": senderEvent = Properties.Localization.txtChatInfoSenderUser; myClientForm.myClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage); break; } //if chat session exist display content in conversation window if (tmplChatSession != null) { if (tmplChatSession.ChatTabConversation != null) { IMMessage message = new IMMessage(senderEvent, messageText, messageGUID, messageDateTime, style, template, myEmoticons); tmplChatSession.ChatTabConversation.Document.Write(message.HTML); tmplChatSession.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatTabConversation.Document.Body.ScrollRectangle.Height); } } }
private void OnImageHyperLinkAdd(IMMessage imMessage, ImageHyperlink hyperlink) { Guid guid = hyperlink.Guid; if (guid.Equals(MessageElementTags.GuidLinkSafePage) || guid.Equals(MessageElementTags.GuidLinkHttp)) { TXGrayURLMgr grayURLMgr = ComponentManager.GetGrayURLMgr(); ITXDataRead txData = grayURLMgr.QueryURLInfo(hyperlink.SoureUrl); if (txData != null) { this.SetURLInfo(hyperlink, txData); } else { GrayURL.QueryType eQueryType = GrayURL.QueryType.QueryType_Unknown; uint uin = 0; if (imMessage.Sender != null) { uin = imMessage.Sender.Uin; } if (uin == 0) { eQueryType = GrayURL.QueryType.QueryType_Unknown; } else if (Util_Buddy.GetCurrentBuddy().Uin == uin) { eQueryType = GrayURL.QueryType.QueryType_Sender; } else { eQueryType = GrayURL.QueryType.QueryType_Reciver; } GrayURL.MSGType msgType = this.IsCommunity ? GrayURL.MSGType.MSGType_Group : GrayURL.MSGType.MSGType_Buddy; grayURLMgr.UpdateURLInfoEx(msgType, hyperlink.SoureUrl, eQueryType); this.AddToUrlInfoDownloadingList(hyperlink.SoureUrl, hyperlink); } } }
public void AddMsgToOutputBox(IMMessage imMessage, string senderName, AddMsgToOutputBoxCallBackHandler callBack) { this.CheckMsgPiece(); InputBox box = this; MessagePack messagePack = imMessage.MessagePack; if (messagePack != null) { if (messagePack.NeedShowHeader && (imMessage.Sender == null)) { messagePack.NeedShowHeader = false; } if (messagePack.NeedShowHeader && string.IsNullOrEmpty(senderName)) { senderName = imMessage.SenderName; if (string.IsNullOrEmpty(senderName)) { senderName = imMessage.Sender.NickName; } } uint elemCount = messagePack.GetElemCount(); Section newItem = new Section(); Block lastBlock = box.Document.Blocks.LastBlock; if ((lastBlock != null) && (string.Compare(lastBlock.Tag as string, "LastTag") != 0)) { lastBlock = null; } if (lastBlock == null) { Paragraph paragraph = new Paragraph { Tag = "LastTag", Margin = new Thickness(0.0) }; lastBlock = paragraph; box.Document.Blocks.Add(lastBlock); } if (messagePack.NeedShowHeader) { if ((imMessage.Sender != null) && (imMessage.Sender.Uin == Util_Buddy.GetCurrentBuddy().Uin)) { newItem.Tag = "me"; } else { newItem.Tag = "other"; } } else { newItem.Tag = "info"; } box.Document.Blocks.InsertBefore(lastBlock, newItem); Paragraph item = new Paragraph(); if (messagePack.NeedShowHeader) { string str; Paragraph paragraph3 = new Paragraph { Foreground = new SolidColorBrush((imMessage.Sender.Uin == Util_Buddy.GetCurrentBuddy().Uin) ? this._selfColor : this._oppColor) }; if (this.IsMsgRecord) { str = senderName + " " + imMessage.DateTime.ToLocalTime().ToString(); } else { str = senderName + " " + imMessage.DateTime.ToLocalTime().ToLongTimeString(); item.Margin = new Thickness(13.0, 0.0, 0.0, 0.0); } paragraph3.Inlines.Add(str); newItem.Blocks.Add(paragraph3); } SetDateTime(newItem, imMessage.DateTime); Paragraph paragraph4 = new Paragraph { Margin = new Thickness(13.0, 0.0, 0.0, 0.0) }; string fontName = messagePack.Header.FontName; if ((string.IsNullOrEmpty(fontName) || (fontName == "宋体")) || (((fontName == "新宋体") || (fontName == "仿宋")) || (fontName == "黑体"))) { fontName = "Microsoft YaHei"; } if (messagePack.Header.FontSize == 0) { messagePack.Header.FontSize = 9; } item.FontFamily = new FontFamily(fontName); item.FontSize = messagePack.Header.FontSize + 3; item.Foreground = new SolidColorBrush(messagePack.Header.FontColor); paragraph4.FontFamily = new FontFamily(messagePack.Header.FontName); paragraph4.FontSize = messagePack.Header.FontSize + 3; paragraph4.Foreground = new SolidColorBrush(messagePack.Header.FontColor); Dictionary<string, bool> imagelist = new Dictionary<string, bool>(); Paragraph paragraph5 = item; bool flag = false; for (uint i = 0; i < elemCount; i++) { ImageElement element4; string path; ImageEx ex2; MessageElement elem = messagePack.GetElem(i); switch (elem.Category) { case MsgPackCat.ELEMTYPE_TEXT: { Guid guid; Guid guid2; TextElement element2 = (TextElement)elem; string text = element2.GetText(); if (!flag && element2.NeedIndent) { Span lastInline = item.Inlines.LastInline as Span; if (lastInline != null) { Run run = lastInline.Inlines.LastInline as Run; if (run != null) { run.Text = run.Text.Replace("\r", "").Replace("\n", ""); } } paragraph5 = paragraph4; } string url = element2.GetUrl(out guid, out guid2); Span span2 = new Span(); Span span3 = span2; paragraph5.Inlines.Add(span3); if ((messagePack.Header.FontEffect & 2) != 0) { span2.FontStyle = FontStyles.Italic; } if ((messagePack.Header.FontEffect & 1) != 0) { span2.FontWeight = FontWeights.Bold; } if (string.IsNullOrEmpty(url)) { if ((messagePack.Header.FontEffect & 4) != 0) { Underline underline = new Underline(); span2.Inlines.Add(underline); span2 = underline; } span2.Inlines.Add(text); } else { ImageHyperlink hyperlink = new ImageHyperlink { Guid = guid, SoureUrl = url }; span2.Inlines.Add(hyperlink); span2 = hyperlink; hyperlink.AddText(text); this.OnImageHyperLinkAdd(imMessage, hyperlink); } continue; } case MsgPackCat.ELEMTYPE_SYSFACE: { SysFaceElement element = (SysFaceElement)elem; ImageEx uiElement = ReplaceControls.CreateImageExWithId(element.FileName, element.Index.ToString()); uiElement.Width = element.FaceWidth; uiElement.Height = element.FaceHeight; paragraph5.Inlines.Add(uiElement); if (callBack != null) { callBack(imMessage, element); } continue; } case MsgPackCat.ELEMTYPE_IMAGE: case MsgPackCat.ELEMTYPE_OFFLINEPIC: element4 = (ImageElement)elem; path = element4.Path; if (string.IsNullOrEmpty(path)) { continue; } ex2 = new ImageEx { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Stretch = Stretch.None, SnapsToDevicePixels = true, Tag = element4 }; path = path.ToLower(); if (!CheckFileExists(imagelist, path)) { break; } ex2.Source = path; goto Label_0710; case MsgPackCat.ELEMTYPE_FILE: { FileElement element5 = (FileElement)elem; string str7 = Helper_Icon.MakeSysIconFileByFileName(element5.Path); string fileSize = element5.GetFileSize(); string fileName = element5.GetFileName(); if (!string.IsNullOrEmpty(str7)) { ImageEx ex3 = new ImageEx { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Stretch = Stretch.Uniform, SnapsToDevicePixels = true, Width = 32.0, Height = 32.0 }; if (!string.IsNullOrEmpty(element5.Tip)) { ex3.ToolTip = element5.Tip; } ex3.Source = str7; StackPanel panel = new StackPanel { Margin = new Thickness(0.0, 2.0, 0.0, 2.0), Orientation = Orientation.Horizontal }; panel.Children.Add(ex3); TextBlock block2 = new TextBlock(new Run(fileName + "\n" + fileSize)) { Margin = new Thickness(0.0, 4.0, 0.0, 0.0) }; panel.Children.Add(block2); paragraph5.Inlines.Add(panel); } continue; } default: goto Label_087B; } if (this.IsMsgRecord) { ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "errorBmp.gif"; } else if (MsgPackCat.ELEMTYPE_IMAGE == elem.Category) { TXLog.TXLogImage(string.Concat(new object[] { "收到图片文件需要下载:", element4.Id, " ", path })); ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "sendingBmp.gif"; this.AddToImagesDownloadingList(element4.Id, ex2); } else if (MsgPackCat.ELEMTYPE_OFFLINEPIC == elem.Category) { TXLog.TXLogImage(string.Concat(new object[] { "收到离线图片文件需要下载:", element4.Id, " ", path })); ex2.IsEnabledClick = true; ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "OfflinepicManualGet.png"; ex2.ToolTip = "点击获取图片"; ex2.Cursor = Cursors.Hand; } Label_0710: paragraph5.Inlines.Add(ex2); continue; Label_087B: TXLog.TXLog3("Msg", "AIO 未处理的消息类型, "); } if (item.Inlines.Count > 0) { newItem.Blocks.Add(item); } if (paragraph4.Inlines.Count > 0) { newItem.Blocks.Add(paragraph4); } box.ScrollToEnd(); } }
public void AddToConversation(String chatJID, String senderJID, string messageText, string messageHTML, DateTime messageDateTime, string messageGUID, bool forceEmpty, bool flashWindow) { if (InvokeRequired) { this.Invoke(new AddToConversationDelegate(this.AddToConversation), new object[] { chatJID, senderJID, messageText, messageDateTime, messageGUID, forceEmpty, flashWindow }); return; } //IMMessage parameters MessageStyle style = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray); MessageTemplateType template = MessageTemplateType.Notification; ChatSession tmplChatSession = (ChatSession)myChatSessions[chatJID]; JabberUser chatJabberUser = null; JabberUser senderJabberUser = null; if (tmplChatSession == null) { try { ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(chatJID); if (contactList.Count > 0) { NTContact ntContact = (NTContact)contactList[0]; chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname); } else { chatJabberUser = new JabberUser(chatJID); } NewChat(chatJabberUser, false); tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID]; if (tmplChatSession == null) { return; } } catch (Exception) { return; } } if (forceEmpty) { tmplChatSession.ChatBox.ResetHTML(); } if (senderJID == myClientForm.mUserAccount.JabberUser.JID) { //outgoing message senderJabberUser = myClientForm.mUserAccount.JabberUser; style = tmplChatSession.OutgoingStyle; template = MessageTemplateType.Out; } else { //incomming message senderJabberUser = tmplChatSession.JabberUser; if (flashWindow) { FlashWindow(this.Handle, true); myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage); ShowIt(); mMessageInTimeout = 360; myNotifyIcon.Visible = true; } style = tmplChatSession.IncomingStyle; template = MessageTemplateType.In; } //if chat session exist display content in conversation window if (tmplChatSession != null) { if (tmplChatSession.ChatBox.ChatTabConversation != null) { SetComposing(false, senderJID); if (messageHTML == "") { messageHTML = messageText; } IMMessage message = new IMMessage(senderJabberUser.Nick, messageHTML, messageGUID, messageDateTime, style, template, myEmoticons); tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML; tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height); tmplChatSession.ChatBox.AttachEvents(); } } }
public void AddNotification(String jid, String senderEvent, string messageText, DateTime messageDateTime, string messageGUID, bool flashWindow, bool forceChat) { if (InvokeRequired) { this.Invoke(new AddNotificationDelegate(this.AddNotification), new object[] { jid, senderEvent, messageText, messageDateTime, messageGUID, flashWindow }); return; } //IMMessage parameters MessageStyle style = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray); MessageTemplateType template = MessageTemplateType.Notification; ChatSession tmplChatSession = (ChatSession)myChatSessions[jid]; JabberUser jabberUser = new JabberUser(jid); switch (senderEvent) { case "INFO": senderEvent = ""; if (flashWindow) { myClientForm.myNotifyIcon.ShowBalloonTip(10, jabberUser.Nick, messageText, ToolTipIcon.Info); } break; case "CLIENT": case "SERVER": case "PRESENCE": case "BUDDYUPDATE": senderEvent = Properties.Localization.txtChatInfoSenderSystem; break; case "NUDGE": senderEvent = ""; myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingNudge); FlashWindow(this.Handle, true); #region Shake Window Random rand = new Random(); int left = this.Left; int top = this.Top; for (int i = 0; i < 30; i++) { int randLeft = rand.Next(-10, 10); int randTop = rand.Next(-10, 10); this.Left = (left + randLeft) > 0 ? left + randLeft : 0; this.Top = (top + randTop) > 0 ? left + randLeft : 0; Thread.Sleep(50); } this.Left = left; this.Top = top; #endregion break; case "INVITE": senderEvent = Properties.Localization.txtChatInfoSenderUser; myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage); break; } if (forceChat && tmplChatSession == null) { try { JabberUser chatJabberUser; ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(jid); if (contactList.Count > 0) { NTContact ntContact = (NTContact)contactList[0]; chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname); } else { chatJabberUser = new JabberUser(jid); } NewChat(chatJabberUser, false); tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID]; if (tmplChatSession == null) { return; } } catch (Exception) { return; } } //if chat session exist display content in conversation window if (tmplChatSession != null) { if (tmplChatSession.ChatBox.ChatTabConversation != null) { IMMessage message = new IMMessage(senderEvent, messageText, messageGUID, messageDateTime, style, template, myEmoticons); tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML; tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height); tmplChatSession.ChatBox.AttachEvents(); } } }
void HandleWebSocketFrame(IChannelHandlerContext ctx, WebSocketFrame frame) { // Check for closing frame if (frame is CloseWebSocketFrame) { this.handshaker.CloseAsync(ctx.Channel, (CloseWebSocketFrame)frame.Retain()); return; } if (frame is PingWebSocketFrame) { ctx.WriteAsync(new PongWebSocketFrame((IByteBuffer)frame.Content.Retain())); return; } if (frame is TextWebSocketFrame) { // Echo the frame String requestmsg = ((TextWebSocketFrame)frame).Text(); IMMessage iMMessage = new IMMessage(); iMMessage = JsonHandler.DeserializeJsonToObject <IMMessage>(requestmsg); //0为登陆,保存管道 if (iMMessage.msgType == 0) { #region 登陆 //app if (iMMessage.pipetype == "0") { try { IChannel jieshourenctx = AppUsers[iMMessage.uid]; AppUsers.Add(iMMessage.uid, ctx.Channel); } catch { AppUsers.Remove(iMMessage.uid); AppUsers.Add(iMMessage.uid, ctx.Channel); } } //web if (iMMessage.pipetype == "1") { try { IChannel jieshourenctx = WebUsers[iMMessage.uid]; WebUsers.Add(iMMessage.uid, ctx.Channel); } catch { WebUsers.Remove(iMMessage.uid); WebUsers.Add(iMMessage.uid, ctx.Channel); } } #endregion List <IMMessage> list = new List <IMMessage>(); #region 取出所有消息并且反序列化 //取出所有消息并且反序列化 var b = redisHelper.ListRange(iMMessage.uid).ToList(); foreach (var item in b) { IMMessage sendiMMessage = new IMMessage(); sendiMMessage = JsonHandler.DeserializeJsonToObject <IMMessage>(item); list.Add(sendiMMessage); } //删除此键 if (b.Count() != 0) { //删除 redisHelper.KeyDelete(iMMessage.uid); } #endregion //遍历发送 foreach (var senditem in list) { if (senditem.msgStatus == "0" && senditem.receiveId == iMMessage.uid) { ctx.WriteAsync(new TextWebSocketFrame("来自历史纪录:" + senditem.toString())); var a = redisHelper.ListRightPush <IMMessage>("send", senditem); } } ctx.Flush(); } //发信 else { try { IChannel receiveNameApp = AppUsers[iMMessage.receiveId]; IChannel receiveNameWeb = WebUsers[iMMessage.receiveId]; //没有登陆地 if (receiveNameApp == null && receiveNameWeb == null) { //写入缓存 iMMessage.msgStatus = "0"; redisHelper.ListRightPush <IMMessage>(iMMessage.receiveId, iMMessage); ctx.WriteAsync(new TextWebSocketFrame("发送成功")); } else { if (receiveNameApp != null) { receiveNameApp.WriteAsync(new TextWebSocketFrame("接收到了:" + requestmsg)); receiveNameApp.Flush(); } if (receiveNameWeb != null) { receiveNameWeb.WriteAsync(new TextWebSocketFrame("接收到了:" + requestmsg)); receiveNameWeb.Flush(); } } //ctx.WriteAsync(frame.Retain()); ctx.WriteAsync(new TextWebSocketFrame("发送成功")); var a = redisHelper.ListRightPush <IMMessage>("send", iMMessage); } catch { } } return; } if (frame is BinaryWebSocketFrame) { // Echo the frame ctx.WriteAsync(frame.Retain()); } }
public MessageCallbackObject(IMMessage msg, MessageBodyType msgType, object call) { this.callback = call; this.message = msg; this.msgType = msgType; }