[分享]WEBIM(即时通讯,客服系统)详解

xuyiazl 2009-07-17 04:15:25
加精
最近看见很多这样的帖子,说是WEBIM,客服系统等等,本人也关心的上去看了看,第1眼感觉就是这个世界在疯狂的刷新.

ajax webim:
这个大家并不陌生,首先利用xmlhttpresquest开发的WEBIM本质跟留言版一样.其区别仅仅在于刷新频率比较快而已.但是你能保证双向通信吗?答案是肯定的.当初我也曾经尝试使用ajax来开发即时通讯,但是测试通不过,中午吃饭的时间回来一看浏览器,居然卡死了.不可否认的是,这能完成工作任务.但是作为技术来讲的话,这个方案是不行的.

客服系统:
首先,大家需要确认的一点就是:客服系统,它是一个独立的系统,和网站是分开的.它分3部分组成:WEB客户端,客服端和通信服务.
WEB客户端:这个大家都很明白,它是嵌入试的,它被嵌在每个产品页面中,甚至整个网站的每一个页面中.像掏宝和拍拍的产品页中都有这样的嵌入,只不过它启动的对象不同.
客服端:往往客服端一般的表现形式都是基于C/S模式的.为什么呢?因为客服端需要处理更多更繁杂的业务.它需要表现出来的功能完全要比WEB端要多的多,比如:对订单的处理,客户的咨询解答,发大量的文字资料(存储在数据库中),客户转交等等一系列复杂的业务处理.有人会说采用B/S模式也可以,对没错,是可以.但是客服需要的是更专业的服务,在没有客户的时候,客服也需要做其他的工作.那么就需要更方便的客服端了.而不是我必须订着浏览器不放.比如说:客服端托盘,有消息则冒泡等等操作.
通信服务:这个服务是专门建立前两者之间的通信通道的,而不是通过ajax频繁刷新来建立通道的.它的作用在于监听和复杂的消息处理.

WEBIM就不多谈了,原理其实是一样.不过它并没有C/S端,WEB+Server+WEB.当然也可以和QQ一样b/s,c/s都有,都能互通.那就关键在于你的Server处理了.

下面一些优缺点对比:
AjaxIM SocketIM
互通性: 被动 主动
复杂度: YES NO
扩展性: 低 高
维护性: 低 高
对比结果很明显,在OCP原则中ajaxim是抽象和实现都得改,是一条线的往下加,而SocketIM不同只需要增加新的业务规则.针对以前所定义好的抽象是不需要再改动的.

废话不多说了,有图有真相:




代码实现就不讲了,没这个必要.多看看书.


源码下载
...全文
3281 137 打赏 收藏 转发到动态 举报
写回复
用AI写文章
137 条回复
切换为时间正序
请发表友善的回复…
发表回复
whkongsheng 2012-07-19
  • 打赏
  • 举报
回复
看了半天,还是没看懂实现的原理,想自己写一个,没思路啊
xuyan183011 2012-02-23
  • 打赏
  • 举报
回复
楼主能不能具体说下代码实现啊,我都看了两天了,还是看不懂。
Ander320 2011-07-13
  • 打赏
  • 举报
回复
这个是包括服务器端的吗,谢谢了。
Newbie0617 2011-05-09
  • 打赏
  • 举报
回复
唉。。。我也想做一个技术强人!
hahahahx 2011-03-02
  • 打赏
  • 举报
回复
看看,这是俺的毕业设计
xinqinglhj 2010-08-12
  • 打赏
  • 举报
回复
MARK

呵呵 学习了
影子_爱人 2010-05-07
  • 打赏
  • 举报
回复
谢谢分享 研究
zc22 2010-05-07
  • 打赏
  • 举报
回复
用httphandler 去 hold住一个http,实现转发。不一样能实现webIM。难道这个解决方案性能会很差吗?
zc22 2010-05-07
  • 打赏
  • 举报
回复
马勒戈壁的。。。。用flash。我没话说了。flash开socket,谁都知道可以做webim。

不知道lz是否用ajax做“长链接”。这个和刷新是两码事。同回复,死机是代码的问题,貌似httprequest没有这么脆弱。如果是长链接下,处理好出错就行了。
skyctr 2009-12-11
  • 打赏
  • 举报
回复
楼主,这个WEBIM不带数据库的吗?
xxdyh 2009-08-18
  • 打赏
  • 举报
回复
请问LZ 这东西怎么运行?好像不行哦
xuyiazl 2009-08-03
  • 打赏
  • 举报
回复
1
sadikaqy 2009-07-30
  • 打赏
  • 举报
回复
谢谢LZ分享……
南哥1207 2009-07-30
  • 打赏
  • 举报
回复
强强烈烈支支持持楼楼主主~
jtzl 2009-07-30
  • 打赏
  • 举报
回复
up 谢谢分享
lovvver 2009-07-30
  • 打赏
  • 举报
回复
多谢楼主分享
FigoZhu 2009-07-30
  • 打赏
  • 举报
回复
great~~~thanks
daihua_1113 2009-07-29
  • 打赏
  • 举报
回复
呵呵
好好学习
im2web 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 115 楼 xuyiazl 的回复:]
引用 112 楼 sp1234 的回复:
只是说什么“web双向通讯”、“web不需要NAT”,等于没说。web服务器可以hang住客户端从而骗小孩子这个是回调技术,不直接追究稍微细节一点的东西就会被我们自己忽悠。


YES,就像LS那位发的WEB MSN 一样,为什么使用aspx,而不是去使用ashx?我想懂得细节的人就会明白。

在CSDN不需要把答案阐述的太明了,针对真正想弄明白的提问者帮助会很大。

你的回贴风格确实值得很多人学习。
[/Quote]

为什么? 因为我只会一点点的c#。ashx 是什么? 我不知道。


http 本来就只是个简单的get 协议,因为简单所以广泛,所以我们加上了很多新的技巧。目前的http的实现都不太适合做实时im, 在我看来webim 的最好实现是重新实现个专门的http服务器。

baobei7758 2009-07-29
  • 打赏
  • 举报
回复
收藏
加载更多回复(113)

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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