锁定老帖子 主题:一步一步打造WebIM(1)
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-26
之前笔者发布的云翔在线软件平台中已经包含了一个功能相对比较齐全的WebIM,这个系列的文章就是介绍如何开发出功能类似的WebIM,在文章开始前,先介绍一下相关的技术: 1.Comet Comet 是一种新的 Web 应用架构。基于这种架构开发的应用中,服务器端会主动以异步的方式向客户端程序推送数据,而不需要客户端显式的发出请求。Comet 架构非常适合事件驱动的 Web 应用,以及对交互性和实时性要求很强的应用,如股票交易行情分析、聊天室和 Web 版在线游戏等。 在.NET要实现Comet就要用到IHttpAsyncHandler,在开始阅读文章前,建议先了解一下IHttpAsyncHandler。 2.Lesktop Lesktop是一款用于开发RIA网站的开源JS界面库,Lesktop提供了一个功能强大的可视化开发工具帮助您快速的开发RIA网站。这个系列介绍的WebIM的前台UI将使用Lesktop来开发。 接下来,将开始今天的主题,开发一个简单的WebIM,这个WebIM将使用Comet技术,从而避免在客户端和服务端轮询,提高WebIM的性能(目前主要实现能够聊天,其他功能会在以后不断完善)。客户端界面在这就不详细介绍了,用Lesktop拖拖控件就可以了,效果如下: 1.基本思路 Comet便是指服务器推技术。它的实现方式是在浏览器与服务器之间建立一个长连接,待获得消息之后立即返回。否则持续等待,直至超时。客户端得到消息或超时之后,又会立即建立另一个长连接。Comet技术的最大优势,自然就是很高的即使性。在.NET中实现这种方式并不困难,用IHttpAsyncHandler即可。 接收消息的流程: 发送消息流程: 发送消息和添加监听器将由一个类型为MessageManagement对象来负责, 添加监听器代码如下: 发送消息代码如下: 2.使用IHttpAsyncHandler实现Comet IHttpAsyncHandler的介绍可以查阅下msdn,以下是接收消息的源代码,主要是重写BeginProcessRequest和EndProcessRequest: WebIM源代码(注意:开发时起始页为WebIM_Dev.htm,直接打开起始页为WebIM.htm) 一个简单的WebIM就先介绍到这里,如果您有任何问题,可以通过WebIM与我联系。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-28
为啥选择comet而不是基于xmpp协议的openfire做服务端,客户端使用jsjac这样的方案呐?我用这个搞了一个,效果还不错。。
|
|
返回顶楼 | |
发表时间:2010-04-28
你那个平台的不错,这个可以直接用吗
|
|
返回顶楼 | |
发表时间:2010-04-28
最后修改:2010-04-28
现在可以用,注册个账号就行了
|
|
返回顶楼 | |
发表时间:2010-04-28
lookdd1 写道 为啥选择comet而不是基于xmpp协议的openfire做服务端,客户端使用jsjac这样的方案呐?我用这个搞了一个,效果还不错。。
openfire是一套解决方案,而webim更多的是实现自己的业务,用的最多也就是我们服务器把数据发送给openfire,openfire再推送到页面。多了个openfire的中间步骤,实现起来相对简单,但是给系统带来一定的复杂性了,完全可以用comet替代。 |
|
返回顶楼 | |
发表时间:2010-04-29
comet是不是需要服务器端支持?
|
|
返回顶楼 | |
发表时间:2010-04-29
需要服务端支持的
|
|
返回顶楼 | |
发表时间:2010-04-29
lucc 写道 需要服务端支持的
用jetty试试 |
|
返回顶楼 | |
发表时间:2010-04-29
下载试了一下,报错Server Error:Not Found,估计是我设置错了
|
|
返回顶楼 | |
发表时间:2010-04-29
yongdi2 写道 下载试了一下,报错Server Error:Not Found,估计是我设置错了
要先部署网站,不能直接打开的 |
|
返回顶楼 | |