大家来讨论一下网上在线客服聊天的设计方案

moodboy1982 2014-03-20 02:53:00
现在网上有很多网站会弹出在线和客服聊天的软件。网站浏览者在网页和客服聊天。客服在桌面端回复。在聊天的过程中,可以传图片,可以传文件。参考如“商务通”

但关于这个聊天软件的实现方式,大家来聊聊。
比如服务器端的实时聊天记录用什么来保存?
保存到数据库的话以什么格式等等!

...全文
940 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangnaisheng 2014-07-20
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 楼主 moodboy1982 的回复:
但关于这个聊天软件的实现方式,大家来聊聊。 比如服务器端的实时聊天记录用什么来保存? 保存到数据库的话以什么格式等等!
告诉你一个基本概念,聊天本身的“不落地”的,不需要保存。如果需要备份,那么异步保存到数据库表理就行了,这根本不影响聊天本身。 例如你想通过QQ跟对方聊天,或者你想打电话给对方听听对方声音,腾讯的服务器不需要先把消息保存到什么关系数据库里,移动公司的服务器也不需要先把语音数据保存到什么关系数据库里。 以为什么东西都是先保存到到数据库里、然后另一端再去数据库select查询,这样的人可能只做过小OA,没有参与开发过真正的通讯程序。 通讯程序设计实现通讯业务,直接了当地将数据经过服务器、路由器非推给对方的客户端程序,跟什么关系数据库毫无关系。然后才考虑到次一层次的需求,如果你在任何一个服务器或者路由器上需要备份数据(例如用于计费、或者用户设备启动后重发,等等),你才需要额外地写一条并行异步将数据保存到数据库的语句。
  • 打赏
  • 举报
回复
对于一个聊天系统来说,根本不需要将聊天内容实时保存。许多人只会把数据保存到关系数据库里、然后另一个客户端再查询数据库,因此怎么都理解不了IM软件。 聊天服务器非常简单。当它收到聊天内容之后,查找接收人与服务器的信道(例如是Socket或者TcpClient或者http comet),然后把信息推送(发送)过去就行了。内容根本不落地! 把这个基本概念搞对头之后,保证了IM基本架构成立之后,你才应该考虑什么“用什么来保存”的问题。假如必须保存的话,这不会占用服务器处理通讯的线程,而是会在一个子线程中异步地将聊天内容保存起来。保存的信息将来可以查询,例如可以用来在客户端上线时查询一下最近某个信息之后有没有新的未读取的信息。 而保存方式,这跟你的聊天内容数据结构设计有关。比如说其实体定义是
        public class Message
        {
            public string Id;    //信息唯一编号。用来在其它地方方便引用
            public string Author;             //发送人的user id
            public string Recipient;        //接收人的user id
            public DateTime TheTime;   //服务器端收到(转发)消息时的UTC时间
            public string XAML;             //内容
        }
这就是用XAML来保存聊天内容。包括RichText文字排版,嵌入的图片和嵌入的其它文件,都由你的wpf或者silverlight程序序列化为一个UIElement,并且可以通过 XamlReader 或者 XamlWriter 进行序列化。 当然你也可以采取html格式,或者自定义对象转换为json格式。总之只要你的聊天客户端可以将程序内部的对象序列化,在另一端反序列化就行。 搞懂了这个实体定义,对应到数据库里对任何一个程序设计师都应该不成问题。
moodboy1982 2014-03-20
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:
网页的那双方都是网页的 可以参考10多年前的那种聊天室。。。 2什么商务通这些东西,百度一下就有很多源码下载。。。 文字不用说了,他们传图片文件这类的,都是先HTTP上传到服务端。然后另一端的直接在下载下来就是了。
不,应该是客户端是JS控制网页。客服端是C/S应用程序。 现在先不谈原码,说设计理论。空谈误国~
本拉灯 2014-03-20
  • 打赏
  • 举报
回复
网页的那双方都是网页的 可以参考10多年前的那种聊天室。。。 2什么商务通这些东西,百度一下就有很多源码下载。。。 文字不用说了,他们传图片文件这类的,都是先HTTP上传到服务端。然后另一端的直接在下载下来就是了。

13,189

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧