⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagemanager.cs

📁 语音视频功能 里面实现了基本的QQ与语音对话
💻 CS
字号:
using System;
using System.IO;
using System.Xml;
using System.Threading;

using gowk.core.packets;
using gowk.net.Sockets;
using gowk.net;

namespace gowk.core.managers
{
	/// <summary>
	/// MessageManager 的摘要说明。
	/// </summary>
	public class MessageManager:ManagerBase
	{
		public event JabberEventHandler 
			ChatMessageReceived,
			ChatMessageError,   
			GroupChatMessageReceived,
			HeadLineMessageReceived,
			VideoChatReceived;
		public MessageManager():base()
		{
		}
		public MessageManager(JabberClient jc):base(jc)
		{
		}
		protected internal override bool OnMessage(Packet pack)
		{
			if(!(pack is Message))return false;
			Message msg=(Message)pack;

			switch(pack.Type)
			{
				case PacketType.groupchat:
					if(this.GroupChatMessageReceived!=null)
						this.Invoke(this.GroupChatMessageReceived,new object[]{new JabberEventArgs(pack)});	
					break;
				case PacketType.chat:
					if(this.ChatMessageReceived!=null)
					{ 
						if(msg.VideoChat!=null)
						{
							this.Invoke(this.VideoChatReceived,new object[]{new JabberEventArgs(pack)});	
						}
						else
						{
							this.Invoke(this.ChatMessageReceived,new object[]{new JabberEventArgs(pack)});	
						}
					}
					break;
				case PacketType.error:
					if(this.ChatMessageError!=null)
						this.Invoke(this.ChatMessageError,new object[]{new JabberEventArgs(pack)});		
					break;
				case PacketType.headline:
					if(this.HeadLineMessageReceived!=null)
						this.Invoke(this.HeadLineMessageReceived,new object[]{new JabberEventArgs(pack)});
					break;
				case PacketType.normal:
					goto case PacketType.chat;
				default:
					gowk.utility.Diagnostics.Debug.Write("receive a unhanding message");
					break;
			}
			return true;
		}
		public void RequestVideoChat(string to,string body,string ip,int port)
		{
			Message msg=new Message();
			//	msg.From=from;
			msg.From=this.JabberClient.Jid.ToString();
			msg.To=to;
			msg.Body=body;
			msg.Type=PacketType.chat;
			msg.ID=IDGenerator.NewID;
			msg.VideoChat=new gowk.core.packets.Message.videochat();
			msg.VideoChat.ip=ip;
			msg.VideoChat.port=port;
			msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.request;
			this.Send(msg);
		}
		public void EndVideoChat(string to)
		{
			Message msg=new Message();
			//	msg.From=from;
			msg.From=this.JabberClient.Jid.ToString();
			msg.To=to;
			msg.Type=PacketType.chat;
			msg.ID=IDGenerator.NewID;
			msg.VideoChat=new gowk.core.packets.Message.videochat();
			msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.end;
			this.Send(msg);
		}
		public void ResponseVideoChat(string to,bool ok,string body,string ip,int port)
		{
			Message msg=new Message();
			//	msg.From=from;
			msg.From=this.JabberClient.Jid.ToString();
			msg.To=to;
			msg.Body=body;
			msg.Type=PacketType.chat;
			msg.ID=IDGenerator.NewID;
			msg.VideoChat=new gowk.core.packets.Message.videochat();
			msg.VideoChat.ok=ok;
			msg.VideoChat.ip=ip;
			msg.VideoChat.port=port;
			msg.VideoChat.type=gowk.core.packets.Message.VideoChatType.response;
			this.Send(msg);
		}
		public void SendMessage(string to,string subject,string body,string rtf,string thread,string type)
		{
			Message msg=new Message();
			//	msg.From=from;
			msg.From=this.JabberClient.Jid.ToString();
			msg.To=to;
			msg.Subject=subject;
			msg.Body=body;
			msg.Rtf=rtf;
			msg.Thread=thread;
			msg.Type=type;
			msg.ID=IDGenerator.NewID;
			this.Send(msg);

		}
		public void SendMessage(string to,string subject,string body,string rtf,string thread,string type,JabberCallBack cb,int timeout)
		{
			Message msg=new Message();
		//	msg.From=from;
			msg.From=this.JabberClient.Jid.ToString();
			msg.To=to;
			msg.Subject=subject;
			msg.Body=body;
			msg.Rtf=rtf;
			msg.Thread=thread;
			msg.Type=type;
			msg.ID=IDGenerator.NewID;
			this.Send(msg,cb,timeout);
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -