使用SilverLight构建插件式应用程序(八) —聊天插件Duplex WCF的实现
2008-10-23 11:43:33 来源:WEB开发网这次是一个在线聊天的插件,插件参考了MSDN中Duplex WCF服务的实现和网上一些聊天程序,基本可以实现用户登录和聊天,如果用户不存在就保存聊天数据到数据库,等用户下次登陆的时候读入。
这个是聊天时候的图例:
1: 定义聊天时候传输聊天的数据实体,这个所有WCF都是一样的,没什么特殊的,代码如下:
[DataContract]
public class ChatMessage
{
[DataMember]
public string From;
[DataMember]
public string To;
[DataMember]
public int Type;//1:Text;2:Url;3:File;4:Image;5:Audio;6:Video;0:None;-1:System;-2:Heart;
[DataMember]
public string Data;
[DataMember]
public byte[] Content;
}
这样用户每次聊天就发送的使这个数据了。这是服务器端的定义。
2:定义回调时候的接口:
[ServiceContract]
public interface IWSChatClient
{
[OperationContract(IsOneWay = true)]
void Receive(Message returnMessage);
}
3:定义Duplex WCF服务的实现,
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceContract(Namespace = "WindCloud", SessionMode = SessionMode.Required, CallbackContract = typeof(IWSChatClient))]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class WSChatService
{
static Dictionary<string, IWSChatClient> chatClients = new Dictionary<string, IWSChatClient>();
static List<string> m_NameList = new List<string>();
private static Object syncObj = new Object();
static int guestIndex = 1;
string name = "";
}
Tags:使用 SilverLight 构建
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接