最近项目里有这个需求,要做一个企业内部的聊天软件。什么在线交流,留言,聊天记录,已读,未读,等功能都要。
刚开始想的比较复杂,需要研究QQ的实现等等,接触网络编程。
但是后来想了想,我们项目采用了WCF,可不可以将聊天作为一种服务发布,A to B(B to A)的信息保存在服务器的数据库上,然后在客户端UI搞个定时器定时的去获取数据,这样的好处:
1.可以不用去研究网络编程方面的东西(确实没什么了解)
2.可以有永久的聊天记录(QQ的聊天记录都是在本地的,不知道它的漫游聊天记录怎么实现的)
但是缺点,好像群聊比较难实现,不知道WCF能不能实现主动“推”消息给客户端。
因为需要查看聊天记录,所以如果采用网络编程的方式,P2P好像不行,聊天记录没了,有个P2P的middleboxes不知道啥东西能不能实现。。。。另外,如果采用类似QQ的软件实现,那么也不能UDP协议的用点对点的聊天,必须通过服务器中转。。。
现在方案比较多,思想也比较混乱,希望做过这方面的兄弟能帮忙分析一下。万分感谢!!
同意楼上两哥们的意见。
确实。开发这个确实成本太高。现在这个软件已经被人开发的已经都快到极致了,现在网上的这样的软件太多了。直接下下来就能用啊,实在是没有必要去开发。开发你也是抄袭别人的功能。而且还不见得有人家的功能强大。开发成本也很高。还是直接找一个成品用用吧。
现成的此类软件很多,一般企业不买账的。
比如GTalk就能满足企业内部应用。
监视聊天记录很无聊,也非法,通过Google企业套件,用GTalk限制只能和内部员工交谈就可以了。
这个分析的话就有点多了吧!不过简单的就直接用ipmsg好了!这个聊天,也可以记录,传文件就更不用说了,超级方便!我觉得自己开发成本太高,而且也不太方便!
如果是站在学习的角度的话,那就另当别论了,呵呵。
需要霸王硬上弓的话,我建议楼主学习一下web版聊天软件的实现方式,web虽也是单向的,服务端无法主动推送给客户端,但可以让客户端轮询。当然,这样做性能上可能要求苛刻,但因为是企业内部应用,假设用户不多的前提下,我想是可以尝试的,呵呵。最后,如果你实现了,你的web版应该非常容易实现,而web版本不需要客户端安装任何插件,你为此可能要受到嘉奖哦:)!
园子里已经有非常成熟的通信框架ESFramework,可以用来做类似QQ的IM软件,支持P2P(NAT穿透),传文件,而且还可以支持语音视频聊天,我们公司就是用的该框架来开发视频会议系统的。可以参考一下。