AgileEAS.NETSOA中间件平台.NetSocket通信框架完整应用例子在线聊天室系统代码解析魏琼东

AgileEAS.NETSOA中间件Socket/Tcp框架是一套Socket通信的消息中间件:

下面我将为大家介绍这个案例的关键代码及阅读、理解、修改完善所需要注意的地方。

本案例的源代码在下载压缩包的Code目录之中,所有的引用AgileEAS.NETSOA中间件平台的程序集及客户端、服务端运行所必须的文件都在下载压缩包的Publish目录之中,所有项目的编译输出路径也都是在Publish目录,也就是所有项目不管是在Debug编译环境还是在Release编译环境都是输出在Publish目录之中,有关具体的设置请看下图:

ChatRoom解决方案之是共有ChatRoom.Entities、ChatRoom.BLL.Contracts、ChatRoom.BLL.Host、ChatRoom.Messages、ChatRoom.Socket、ChatingRoom.MainClient、ChatingRoom.UserManage共七个项目,其中:

ChatRoom.Entities:是聊天室注册用启的数据存储实体,其中只包括一个实体User,即注册用户信息。

ChatRoom.BLL.Host:为ChatRoom.BLL.Contracts所定义的服务契约的功能实现。

ChatRoom.Socket:为服务端的业务代码、包括AgileEAS.NETSOA服务进程的SocketService插件以及服务端收到客户端各种消息的消息处理器代码。

ChatingRoom.MainClient:为客户端代码、包括客户段界面以及客户端收到通信消息的消息处理器代码。

关于这个问题就涉及到了AgileEAS.NETSOA中间件平台的SOA服务实例及Socket框架的设计,在SOA服务实例本身被设计成为了一个可以运行WCF、WS、Socket等各吃点通信及其他应用服务的运行容器,那么我们的Socket服务端也可以在此服务实例之中运行,同时在我们的AgileEAS.NETSOA中间件平台的微内核程序集EAS.MicroKernel.dll之中定义了SocketService插件的实现标准:

ChatRoom.Socket项目之中包括了一个ISocketService的实现ChatRoom.Socket.MessageService

1:socketServer.AddHander(newChatMessageHandler());2:socketServer.AddHander(newLoginMessageHandler());Socket插件服务的定义除了代码定义之外,还需要在AgileEAS.NETSOA中间件有SOA服务实例配置文件之中进行定义,因为SOA服务实例程序有32位和64位版本,分别为EAS.SOA.Server.exe和EAS.SOA.Server.x64.exe,所以要根据自身的机器条件和自己喜欢的运行环境修改EAS.SOA.Server.exe.config或EAS.SOA.Server.x64.exe.config:

1:用于告诉SOA服务实例在启动的时候加载并初始化类型为“ChatRoom.Socket.MessageService,ChatRoom.Socket”的SocketService。

注册用户表结构如下:

表名

CHAT_USER

所有者

dbo

列名

数据类型

说明

LOGINID

NVARCHAR(64)

N

Name

Y

用户名

PASSWORD

密码

MAIL

VARCHAR(128)

邮件

SafeKey

密码找回问题

SafeResult

密码找回答案

STATE

BIT

状态

REGTIME

DATETIME

有关针对CHAT_USER表的数据访问使用了AgileEAS.NETSOA中间件平台的ORM及与之配套的Linq进行访问,其对应的ORM实体对象为ChatRoom.Entities.User:

当服务端接收到客户端发来的聊天消息之后,如何转发呢,请参见下图:

关于这一部分的代码请参考ChatRoom.Socket项目之中的聊天消息处理器ChatMessageHandler之中::

1:usingEAS.Sockets;2:usingEAS.Sockets.Messages;3:usingChatRoom.Messages;4:usingSystem;5:usingSystem.Collections.Generic;6:usingSystem.Linq;7:usingSystem.Text;8:9:namespaceChatRoom.Socket10:{11:///

12:///服务器收到聊天消息处理程序。13:///14:publicclassChatMessageHandler:AbstractMessageHandler15:{16:publicoverridevoidProcess(NetSessioncontext,uintinstanceId,ChatMessagemessage)17:{18:if(!message.Secret)//广播消息。19:{20:lock(ChatRoomContext.Instance.LoginInfos)21:{22:foreach(varpinChatRoomContext.Instance.LoginInfos)23:{24:context.Server.Send(p.Session.SessionID,message);25:}26:}27:}28:else29:{30:LoginInfologinInfo=ChatRoomContext.Instance.GetLoginInfo(message.To);31:if(loginInfo!=null)32:{33:context.Server.Send(loginInfo.Session.SessionID,message);34:}35:}36:}37:}38:}关于这一部分的代码请参考:

因为AgileEAS.NETSOA中间件平台Socket通信框架何用的是异步消息处理模式,所以当客户端收到服务器发回的消息的时候其工作线程与界面UI线呢不一致,那么UI界面处理的时候我们就需要异步处理,比如在显示收到的ChatMessage的时候:

AgileEAS.NET平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。

我的技术团队成员都是合作多年的老朋友,因为这个平台是免费的,所以也没有什么收入,都是由程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友。

THE END
1.我的人生路——晓之(张志亮)个人风采背景音乐:光阴的故事(梦之呱呱视频社区休闲摇吧七一红歌晚会视频第一篇章 玩网络好多年了,最早是在电脑上玩呱呱视频社区,里面是聊天室,大家可以在聊天室通过视频直播形式进行互动,可以聊天,唱歌,一个聊天室有三个麦,大家可以上麦娱乐,我和天南海北的朋友一起开心娱乐,还经常举办晚会活动。 这是我们休闲摇吧房间举办的七一红歌晚会,我是房间https://www.meipian.cn/3346x7o4
2.呱呱虚拟视频V5.1.zip呱呱虚拟视频,其前身是呱呱K歌伴侣。 它可以虚拟出一个摄像头,使您在QQ、呱呱视频社区等任何网络支持摄像头的软件/聊天室里使用。 呱呱虚拟视频还支持在线K歌、录制MTV、将本地图片到模拟摄像头与网友共享, 可对您的视频或照片添加各种特效, 还可对屏幕窗口进行转播或录制分享等开放功能。 https://www.iteye.com/resource/weixin_39840650-11294918
3.视频聊天下载视频聊天合集下载支持在qq、Messenger等社交平台邀请好友进行视频聊天操作!欢迎用户在绿色资源网下载使用! 软件介绍飞翔虚拟视频是一款电脑虚拟摄像头视频软件, 点击下载 呱呱视频聊天室 中文 更新时间:2017-07-07 呱呱视频聊室是一款火爆的真人互动视频聊天平台,这里汇聚了才艺达人,全天24小时不断在线提供丰富的视频直播秀,实时互动聊天http://www.downcc.com/p/h1_K4554_P2.html