WPF一步步开发XMPP IM客户端:入门
因为工作原因接触openfire服务端和spark客户端开发2年,主要是基于openfire扩展开发了针对企业用途的服务器插件,还开发了各个平台上的客户端,详情可搜索微信公众号:CVTalk
在开发过程中,发现基于Spark开发Java Swing客户端(公司内部命名CVTalk)比较重,用户体验很难做到和微信客户端看齐,皮肤的开发也比较费力,公司里绝大部分是windows的客户端,而且高清分辨率屏幕的用户越来越多,内存占用过多的问题也解决不了,swing客户端越发力不从心。
于是,我打算利用业余时间做一个 轻量级、易用、稳定、美观的Windows客户端。并抛砖引玉放开源:https://lightchat.codeplex.com/
规划自己未来的职业生涯,将持续做企业基础领域的开发,IM、Voip、Email、Portal等极少领域,持续稳定的前行......做精一件事没有几年是不行的,会一直坚持。
至于做IM开源日臻成熟以后的商业化、vip版本、服务、商务合作等事情,应该是水到渠成的,,目前仅考虑把产品做好。
坚持轻客户端,体验第一。 目标功能只有7个
1、 单聊
2、 群聊
3、 人员搜索
4、 消息搜索
5、 截屏传输
6、 文件传输
7、 插件扩展平台和企业业务集成接口,及xmpp少量扩展和服务器插件
界面采用Modern UI。布局采用微信PC的方式,即搜索+联系人+聊天窗一体,不开新窗。
第一版的界面,单聊界面
消息搜索:
[项目介绍]
项目目录介绍:
主要类介绍
1、Config.cs:全局设置类
//是否显示即时调试窗口 public static bool IsDebug = false; public static String Version = "0.1"; //@加上bareJid的域名部分 public static String Domain = "@im"; //注意:这个是域名,一般为该服务器的机器名 public static String Server = "im";//外网或内网IP,目前AutoResolveConnectServer设置为true也不起作用,只能先改hosts文件 //public static readonly String ServerIP = "111.63.127.83"; public static readonly String ResourceName = "LightChat"; public static readonly bool IsCheckPresence = false; public static readonly bool IsCheckChatState = false; public static readonly bool AutoAgents = false; public static readonly bool AutoPresence = true; public static readonly bool AutoRoster = true; //### 如果无法登陆,请在hosts文件中关联IP到Server域名 ###//C:\Windows\System32\drivers\etc\hosts 最后一行增加IP映射 比如 111.63.127.83 im //自动解析connectserver属性,设置为true就会解析server属性即会利用System.Net.DNS.Resolve方法来将域名映射成ip地址 public static readonly bool AutoResolveConnectServer = false; public static String MeCharacter = "我: "; //### Organization structure data source definition ### //### 组织架构数据源定义 ### //support:XML\Json\SqliteDB //public static IDataSource OrgSource = new XmlDataSource(); public static IDataSource OrgSource = new DbDataSource(); //### User search data source ### //### 用户搜索数据源 ### public static IResultsProvider SearchSource = new UserSearchProvider();
用户搜索数据源,使用统一的返回结果接口IResultsProvider
public static IResultsProvider SearchSource = new UserSearchProvider();
使用接口的目的是使业务代码具有扩展性,比如组织架构数据源实现松耦合的具体实现。
2、登陆类: LightChat.Pages.Login
代码
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66957.html