`

基于Web的IM简介

阅读更多
Web IM的特性:无需安装客户端,穿透防火墙,与社区的紧密结合

Web IM的应用:社区用户的交流,在线客服,CRM。

Web IM实现技术
Web IM的实现技术主要有:

基于插件的技术:如ActiveX,插件相对稳定,但插件需要用户自己允许并下载安装,而大多数用户担心安装了黑客软件或插件对计算机系统不好而不愿意安装,并且上网助手等软件也拦截插件,导致很多用户无法使用。另外,ActiveX受平台限制,只能在IE下使用。


基于Flash的技术:典型的如Yahoo web messenger,结合Flash和Ajax;Google Talk Gadget


纯粹的基于HTTP的技术:


前端使用Ajax的Web IM:meebo, ebuddy, ILoveIm, MSN Web Messenger, KoolIM等。

后台使用comet的Web IM:meebo, gtalk等。

支持wap的有ebuddy, Yahoo Web Messenger, MSN Web Messenger, Google Talk, Mabber, AIM Express (Web Messengers Handbook)


Web IM
1. 国内有独立IM的Web版:Web Popo, WebQQ, 也有与论坛等结合的IM:sohu小纸条,新浪“纸条箱”,QQ空间“小纸条”,淘宝旺旺等,

2. 国外:基于上都是独立IM的Web版。或者集成多种IM的Web版,如meebo, flcikim, ebuddy等。

相关技术
Comet (Server-Push)
Comet技术的一个重要组成部分就是event-drived web server,目前商用的实现已经出现,如lightstreamer,Lightstreamer Dojo Demo:http://app.lightstreamer.com/DojoDemo/

  
几个开源的支持Comet的Library。

Orbited :一种开源的分布式Comet服务器
AjaxMessaging :Ruby on Rails的Comet插件
Pushlets :一个开源框架,可以让服务器端java对象推送事件到浏览器端javascript,java applet,或者flash应用程序
Lightstreamer :提供基于AJAX-COMET模式的HTTP流的商业实现
Pjax :Ajax的推送技术
Scalability(可伸缩性,可扩展性)
Because Comet applications send events in real time, they typically use more resources than other types of web applications, making them more difficult to scale (grow to support large numbers of users).

Comet relies on continually keeping at least one server–client connection open for each client. Traditional web servers, designed for the page-by-page application architecture, cannot cope with such large numbers of open connections. This is a vertical scalability problem: it is difficult to handle many users on each server.
Additionally, because Comet applications are often interactive, allowing arbitrary groups of users to communicate with each-other, splitting tasks among servers is more difficult than for applications in which each user acts independently. This is a horizontal scalability problem: it is difficult to add more servers to the application.
Comet在可伸缩性上的提升:

http://cometdaily.com/2008/01/07/20000-reasons-that-comet-scales/

性能:After some recent optimizations, the Dojo Cometd implementation of the Bayeux protocol running on the Jetty web server can now handle up to 20,000 simultaneous users per server while maintaining sub-second latency.

测试环境:mid-sized Amazon EC2 virtual servers: 7.5 GB of memory, 2×2 EC2 Compute Units, 64-bit platform running Ubuntu 7.10 and Sun JVM 1.5.0_13. A single virtual machine was used as the Cometd server and between 1 and 3 virtual machines were used to generate the load of 20,000 clients.

DWR
DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码)。


可以使用DWR实现Comet Web应用程序,当前支持Comet的容器有Grizzly 、Tomcat 和Jetty等,其中,Jetty是做Ajax+Java开发的首选服务器端开发平台。


面向 Java 开发人员的 Ajax: 使用 Jetty 和 Direct Web Remoting 编写可扩展的 Comet 应用程序:http://www.ibm.com/developerworks/cn/java/j-jettydwr/index.html


Ajax推送与拉取方式的比较:http://www.infoq.com/cn/news/2007/07/pushvspull

实现基于web的实时事件通知的方法:

Dojo
Dojo的Comet库,dojo.io.bind()

DWR has joined the Dojo Foundation, AJAX Frameworks: Mixing Dojo & DWR

几个典型的Web IM 分析
国内与论坛结合的众多Web IM中,sohu的小纸条是比较有特色和代表性的。

Sohu 小纸条
搜狐小纸条是基于Web的即时通讯工具。基于搜狐统一登录系统(Passport),它被搜狐几乎所有重要产品(包括搜狐博客、搜狐社区、ChinaRen等)运用到各自的好友系统中去。成为多数搜狐用户交流沟通的重要工具。借助用户的既存关系,搜狐小纸条的沟通交流显得更加安全,粘性更高。搜狐小纸条将作为搜狐主线产品的联络工具,它不再只是交流沟通的工具,还将成为一个资源共享、信息传递、关系传递等多元化,全方位的产品。


sohu论坛在线人数:69264(中午11:49),88688(下午3点),


http://luxuelin.blog.sohu.com/63653813.html

http://xiaonei.chinaren.com/blog/zoud

http://messenger.blog.sohu.com/

http://sohume.q.sohu.com/topics


ChinaRen/SOHU 小纸条系统核心 核心为3个小server系统:online2(在线系统业务逻辑),userv(用户资料系统),cserv(LRU缓存) 这三个子系统都是UDP+线程池结构,单进程+多线程。配备java接口,apache_mod的json和xml接口。 online2包括了大部分业务逻辑,包括,上线,好友系统,纸条系统。 userv包括设置用户各种属性,信息。 cserv是个大的lru缓存,用于减小磁盘IO。可以放各种信息块,包括用户信息,好友,留言等。目前配备4台服务器(DL380,xeon:3G*2,SCSI:146G raid,Ram:2G),用户分布到4台服务器上,相互交互。服务器可以由1台到2台,到4台,到8台。底层存储为文件存储(无数据库),用reiserfs。 配套系统: mod_online,两个版本,apache和lighttpd版本,用于页面上显示蜡烛人。请求量巨大,目前用lighttpd版本的 mod_online。放在sohu的squid前端机器上,运行在8080,大概8台,每台请求量大概500-800个每秒。蜡烛人在所有ChinaRen页面有ID的地方显示用户是否在线。 目前这套在线系统,作为SOHUIM的内核原型。准备开发WEBIM系统,用户所有SOHU矩阵用户的联络。

(引自:http://luxuelin.blog.sohu.com/63653813.html)


Sohu 小纸条目前共有8台服务器(2006年的数据)


问题:由于没有采用Ajax,聊天延迟非常大,网上有反映:“非常的费资源,聊着聊着,网页越来越慢,而且输入法也会因为资源的占用而发生一些不好的表现”;对Firefox技术不好;


http://images.sohu.com/cs/sohuim/xiaozt/version/2.0/js/webim.1.3.7.js

对比新浪的“纸条箱”
与搜狐小纸条相比,新浪的“纸条箱”还不是IM,只是有好友,发纸条功能,但是不能即时聊天,没有IM窗口,不能看用户的状态,而且一个非常不好的功能就是:每次发纸条都要输入验证码。

新浪“纸条箱”的附加功能:对好友进行了自动分类,如博客好友,论坛好友等。

Meebo
http://blog.meebo.com/?p=129

支持特性:文件传输,Meebo Rooms,

前端Ajax,后端Comet,http server为lightTPD

Meebo的Load Balancing:http://blog.meebo.com/?p=127

服务器端用fastCGI实现(C/C++),

http://blog.meebo.com/?p=23


Meebo的三层:client-side (JavaScript), the communication layer, and then Gaim,

Ajax的使用:Use modified versions of the prototype.js $ function and dojo.require,通过使用Ajax,meebo可以做到无刷新的显示新的内容。使用Ajax有两种方式,一是每隔3~4秒轮询,发信息给服务器询问是否有更新,但是这个延迟也很大,Meebo使用Comet (long-polling)技术,

Meebo的通信方式:为了有更快响应,Simulate event-driven communication between the client and the communication layer. The client pings our servers occasionally to tell the server that the IM session (browser window) is still open. If there are any messages that the client or server needs to communicate, those messages are sent immediately. When there are no events, the communication layer sleeps until it sees a new event that needs to be handled. By doing so, we don’t hammer the servers and minimize the amount of network traffic.


当用户启动一个IM Session,meebo就创建一个与AOL, Jabber, MSN, and Yahoo’s等新的连接(通过开源的GAIM库),moobo的作者(Sandy)对GAIM进行了优化,这样,在每台服务器上可以运行很多GAIM实例,


文件传输:使用Amazon S3/EC2中转,http://blog.meebo.com/?p=355


meebo me:allows users to embed a version of Meebo on their personal website


On October 29, 2007, Meebo announced the abilitly to use applications of Video Conferencing(from MeBeam), Voice Chat(from Pudding Media), Video/Audio Call(from TokBox), Group Voice Call(from TalkShoe), Live Broadcast(from Ustream.tv), and you can create your own applications to play games or anything you'd like.

Google Talk on the web (Google Talk Gadget)
Google Talk Gadget:Flash实现,可以把Google Talk嵌入到各种网页里去。

开源的Web IM
IM 客户端软件最重要的有Pidgin和Miranda,它们实现了流行IM软件的各种协议。

JWChat:一个基于web的Jabber客户端。

IM协议
http://www.answers.com/topic/comparison-of-instant-messaging-protocols


用web2.0朏务(三) - 在线IM篇
由. Riku 将文章归档于 评论



如果你是Gmail用户,并且使用过Gmail内置的Gtalk客户端,那么你应该对在线版的IM软件有所了解,并且有可能你会鏞常喜欢它,下鏢介经几款在线IM软件,供叄住参考。

1』Meebo–支挏AIM』ICQ』Yahoo! Messenger』Jabber』Gtalk和MSN多秏IM平台。描供中文界鏢,速度较快。注册収可以双时添加多个丏双类型的IM帏户,支挏IE和FireFox。另外,如果你使用的是Flock的诏,通过一个插件可以让Meebo与Flock相结又(觏这里),使用更加方便。

2』Mabber–描供的IM平台与Meebo差丏多,双样都支挏AIM』ICQ』Yahoo! Messenger』Jabber』Gtalk和MSN等。Mabber目剏还没有中文界鏢,而且速度也比较慢,它必须注册一个帏号収扏能使用,丏像Meebo那样在剏台描供独立的IM登录口。双样支挏IE和FireFox,目剏还处于Beta阶段。

3』Ebuddy–目剏只描供MSN』Yahoo和AIM三秏IM平台,而且它无需注册,直接在剏台描供每个IM的登录口,它的特色在于描供了与IM软件相类似的使用界鏢,擏作方便』支挏IE和FireFox。另外一个特色在于,它还描供WAP登录界鏢』也就是说可以通手机揥登录到IM平台,这样无论走到哪都能与网友进行沟通。



4』AIM Express–这是AIM描供的独立在线客户端,也就是说它只支挏AIM的右时通软件。

5』MSN Web Messenger–与AIM Express相类似,由微软描供的一款MSN独立在线客户端。



6』ICQ2GO–ICQ公司描供的ICQ独立在线客户端,使用JAVA技术。



7』JWChat–一个基于web的Jabber客户端。它其实是一个开溏软件,你可以下载収在自已的朏务器上安装,描供在线IM应用朏务,当然它也描供了一个在线DEMO,你可以试用它的功能。

8』KoolIM–最新发现的一个,与Meebo类似,描供AIM』ICQ』Yahoo! Messenger』Jabber』Gtalk和MSN多秏IM平台,并且在剏台就可以多帏号双时登录。你也可以注册一个帏号収把多个IM帏号集戏在一起。支挏IE和Firefox。(via Web2.0Fan.net)

9』Imhaha–也是与Meebo鏞常相似的一个在线IM朏务,丏过关键在于它支挏QQ,详细介经觏PARK17的QQ也web-based。

10』RadiusIM–又是一个与Meebo相类似的基于web的IM客户端,它支挏AIM』Yahoo messager!』MSN和Gtalk四秏IM,使用Ajax技术构建。

总的揥说,对于我们常用的一些IM软件,Meebo』Mabber或Ebuddy这三款就足以胜任,而在这三款当中,个人认为Meebo相对而言比较出色一点,丏仅功能比较齏全,而且速度也较快,所以我个人推菏Meebo。


Zimbra拟明年增加Web邮箱IM功能http://tech.QQ.com   2006年11月20日14:41   CNET       (0)
开源软件商Zimbra拟明年增加Web邮箱IM功能


· 免费用QQ打电话超清晰

· 银行卡 安全快捷换Q币


· 沟通无极限手机Q时代

· 魔法表情秀出百变心情


· 管中窥豹  明察秋毫

· QQ秀 秀出个性真自我

CNET科技资讯网11月18日国际报道 开放源代码软件商Zimbra计划在明年整合即时通信功能与其Web邮箱和日程管理软件。


该公司还准备在12月推出一项“离线用户端软件”,让使用者在离线状态使用其网络软件。



Zimbra采用AJAX开发技术,因此使用者享有较大的互动性,例如可用拖曳方式编辑日程管理。


Zimbra还提供若干"Zimlets",可链接其他应用软件。如Google Maps mashup(混搭程序)可在鼠标移至某个地址时显示其位置。


Zimbra共同创始人兼首席执行官Satish Dharmaraj表示,明年公司的焦点是通过整合即时通信拓展市场,此外也会进一步开发其离线客端软件。


第一版的离线客端软件订于今年底推出,将使用区域数据库存储e-mail和日程管理信息,并在使用者重新连线时,与Zimbrae-mail服务器同步更新。


Dharmaraj表示,Zimbra有意通过支持POP协定,或由不同的e-mail帐号转寄e-mail等服务,扩张其软件功能,让该公司的产品与其他e-mail服务互通。


Zimbra号称目前拥有450万用户,其中大部分来自网络服务商(ISP)向其顾客的推销。该公司的开放源代码版服务器软件可免费下载,较高端的版本则为专有软件。


Dharmaraj表示,Zimbra也发现教育市场对网络客端软件和先进的计划排程等功能特别感兴趣。大学和ISP等客户也可改变其软件的外观设计,以搭配自己的品牌风格。


Dharmaraj说:“我们认为(网络)应用软件比桌面应用软件更丰富。仅管仍有少许限制,但其丰富的内容和随时随地访问的优势,远超过那些限制。”



Web IM,类QQ和MSN,Web(非GUI)实现,支持集群。

要点

1.采用长连接,及时响应消息;
       使用Tomcat6的Comet特性
       注:Read事件在POST数据情况下发生,GET方式不会产生Read事件。

2.消息机制
       参与对象:
              用户:User
              群:Group
              参与者:Peer(群成员)        

       服务端:
              集群主机(A类) 1...n主机(B类)
              A----Database
              A、B之间通过http/tcp...协议通讯
       职责:
              A类主机负责数据存取以及产生消息事件;
              B类主机传递消息,并根据消息更新自身状态(集群主机同步);
              B类主机状态包含:Logined User/Active Group/Group Peer

       客户端:
              客户端保持对服务器的长连接(setTimeout,确保只有一个连接);
              连接返回信息(消息)再分派:系统消息、Group消息...
       消息传递:
              Client---监听消息(长连接);
              B类主机为长连接添加事件监听;
              B类主机监听A类主机事件;
              Client--->发送请求(普通请求,短连接)--->B类主机接收,转至---->A类主机;
              A类主机根据请求处理DB,并fireEvent...--->B类主机接收,B类主机根据Event信息,更新Group/User/Peer信息,并转发给Group/User--->
                     1)Group接收,遍历Peer,发送给Peer对应的在线User
                     2)User接收,长连接监听,写消息并close event.(客户端在连接关闭后将再次请求长连接)

3.同账号多次/多处登录限制方法:UserLoginEvent中带B类主机ID,
       1)该用户在别的主机已登录:主机检测本机用户--断线处理。
       2)本主机重复登录:检查已登录User,把之前登录用户断线。


4.Tomcat6配置:
       server.xml,修改为NIO Connector:
       <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" ...URIEncoding="UTF-8"/>
       URIEncoding为URI设置编码(对GET方式生效),POST方式情况增加EncodeFileter。

5.客户端请求:采用Ajax请求,避免页面刷新。


会打开一个网页,你若还没Gmail帐号就点击下面的“Create an account now ”若有Gmail帐号就点

击上面的“Sign In ”输入用户名和密码即可

7、目前还没有发现UC的Web版


              目前web网页版的即时聊天层出不穷,下面是几款web版整合(QQ、msn、icq、yahoo通、Gtalk等)即时聊天工具,请大家根据自己的爱好择优选之。

               像imhaha这样先入为主的大亨,它是第一个推出了网页版的qq 对国内朋友来说是个不小的福音,还有比较出名的像meboo等等

1.www.imtata.com 主要集成了qq和msn两种聊天软件,看来主要针对的是国内市场,和web msn相比除了基本的聊天功能以外,还添加了文件传输,视频和音频等功能,网站宣传上说到可以完成MSN和QQ的群聊(我没有找到相应的按键),色彩上选择了淡雅的色系,没有给人以很强的视觉冲击力,外形比较像外国一个老牌web im集成网站meebo,但是meebo没有集成qq,所以对中国市场应该影响不大。就产品使用体验而言现在imtata还存在很多和其他web版im一样的问题,无法显示全部的好友,容易漏话,反映速度不如客户端等,但这个产品的出现还是以傲人的姿态给正在埋头苦干的腾讯一个下马威。
        web2.0时代到来之后,网站建设似乎显得更加焦急,没有仔细思考就以迅雷不及掩耳之势轰轰烈烈的呈现在网友面前,这其中更不乏很多网站都是来也匆匆,去也匆匆,没有经得起2.0浪潮的洗礼,这次还要让我们拭目以待,看看imtata网站能否走的更远。把以前知道基于web的即时聊天站点做了一个小小的整理

2、imhaha
http://www.imhaha.com
最近最热的要属IMhaha,并不是因为IMhaha 功能上有什么重大的突破 而在于IMhaha支持国内的QQ!IMhaha 是一家"硅谷一家就叫Imhaha的公司"创办的,布局方面和 meebo 很类似,最大的优越就是支持QQ!其他的倒没什么。喜欢 QQ 的朋友可以去试试看。


   3、meebo
http://www.meebo.com/
meebo.com是一种和eMessenger一样的基于Web的多协议IM,目前可以同时支持GTalk、MSN、AOL or ICQ、Yahoo!这五个即时通讯服务。和MYIM、Gaim、Trillian等集成式即时通信软件一样,提供了文字信息的聊天交流,但它不能语音视频,不能群聊,没有Email提醒。不同的是,meebo.com使用了AJAX,不用在客户端进行软件安装,登录meebo.com即可使用,提供完全的Windows客户端用户体验。偶尔需要在没有安装GTalk、MSN、AOL or ICQ、Yahoo!的计算机上使用,还是很值得推荐的。


   4、Ebuddy
http://www.ebuddy.com/
Ebuddy又一家WEB集成式IM工具,它还同时支持移动IM交流。目前Ebuddy支持MSN、YAHOO、AIM等国外主流IM工具。虽然前面介绍的Meebo也提供类似服务,不过Ebuddy更突出的是它支持MOBILE移动终端,在目前颇为热门的移动应用领域,Ebuddy走在了前面。


   5、Kool IM
http://www.koolim.com/
Koolim是另一个在线即时通讯服务器。基本上与前面两个介绍的没有什么差别,只是由于是新服务,所以速度尚可,目前支持 AIM、MSN、Y! IM、Gtalk、ICQ 和 Jabber 等主流 IM 通讯协议。


   6、i love im
http://www.iloveim.com/
这个就没什么好介绍的,基本上跟前面的一样,目前只支持 MSN、Y! IM、AOL


   7、Goowy
http://www.goowy.com/
goowy本身并不是web聊天工具,goowy是一款基于Web的桌面系统(类WebOS的Desktop),不过里面内置了MSN、Y! IM、AOL等im,纯flash的操作界面,用着很舒服



二. 技术资料
1.   web msn的开发资料
■MSN协议
英文:
http://www.hypothetic.org/docs/msn/general/overview.php
中文:
http://blog.csdn.net/fanccYang/category/106184.aspx

■TJMSN
网址:http://tjmsn.tomjudge.com
简介:
TjMSN was started as due to a lack of decent MSN Messenger clients for Linux, so I decided that I would write a client that was platform independent, so that I would run on both my desktop and laptop.

TjMSN is licensed under the terms of the GNU General Public License.

就是一个平台无关的msn客户端
使用情况:
可正常运行,不过对于中文支持较差。在发送中文消息后,就出现发送其他消息失败的情况。

■TjMSNLib
网址:http://tjmsn.tomjudge.com
简介:
About TjMSNLib
TjMSNLib was was split from the original TjMSN development tree to aid in the seperation of the Networking Code from the GUI to a) simplify the GUI code, b) to remove large repeated code chunks, c) to make it easyer to manage the networking as it is now all in a single package rather than spread accross the GUI classes.

TjMSNLib is licensed under the terms of the GNU General Public License

就是一个MSN协议的Java实现的包,提供了3个小例子,一个简单的客户端,一个只会回复“OK”的msn机器人,另一个也是一个msn机器人,可以在用户改变状态时发送“hey”给改用户。

客户端,还有第一个msn机器人已经好用。
本包提供了docapi文档:&<60;&<60; &<60;http://tjmsn.tomjudge.com/docs/lib/

利用以上可以实现web msn
文档地址:
http://tjmsn.tomjudge.com/developers/tjmsnlib.php

■libmsn
网址:http://libmsn.bdash.net.nz/
简介:
libmsn is a C++ library for Microsoft's MSN Messenger service. It provides a high-level interface that allows an application to access instant messaging features with ease.

The libmsn 3 series is a complete refactoring of Meredydd Luff's original libmsn, which is used by several popular instant messaging clients, including Fire, Everybuddy Lite, and attym. The result of the refactoring is that the library is more object-oriented, consistent and maintainable. This has made it possible to simplify the code, add new features, and squash a number of existing bugs.


■MSN Client
简介:http://www.sourceshock.com/details_snippet/37/
用php实现的msn 客户端。使用msn的MSNP8通讯。

没有用起来。


■Blobsy
网址:http://www.blobsy.org/
简介:
Blobsy is an Open Source MSN Messenger bot, designed for easy setup, flexibility and ease of use. It is highly customizable and adding more functionality is extremely easy. It is freely distributable under the GNU General Public License (GPL).

没有用起来。
■JMSN
简介:和TJMSN类似

http://jmsn.sourceforge.net/
■msnmlib
简介:和TjMSNLib类似
不过都是韩文,看不懂
DOCAPI地址:
http://jmsn.sourceforge.net/msnmlib/docs/index.html
■PHP MSN Messenger Class
http://flumpcakes.co.uk/php/msn-messenger
简介:
This is a simple to use class file which can be used to connect to the MSN Messenger Network. For the SSL authentication the php_curl modules can be used, or a curl executable (binary).

Currently the MSN9 Protocol is supported, and IM messages can be sent and received.

- Script updated to fix auth failures -


http://www.meebo.com/


已经见过不少了,例如ebay.com.cn得客服。还有一些公司在线客服
b/s版有个很大得优势,就是不要另外安装软件
公司产品中也有这一块功能,正如楼主所说,用得是Ajax技术
客户用得不多,算是个噱头而已。

# re: 基于Web的IM实现思考 回复
2006-05-09 20:12 by 补丁
不是很清楚怎么实现的,但是gmail里的googletalk似乎是实时的...有谁知道的可否告知一下
很久以前装过个googletalk,似乎是c/s的?


    如今绝大多数IM软件都是基于桌面的,通常使用Tcp/Udp,并且都实现了防火墙穿透(代理)和基于Udp的NAT穿透的P2P技术。创建一个基于Web的IM是否可行(我们这里不考虑在浏览器中嵌入类似ActiveX控件的伪B/S,因为它实际上还是一个C/S,我们要讨论的是纯的Web方式)?答案无疑是肯定的,但是有些限制,这是因为:
(1)基于Web的IM不可避免的采用Http作为主要的通信协议,而Htpp的非连接、无状态特性使得状态管理比较困难。当然,使用Http的好处是能轻易的穿过防火墙。(大多数网关都默认开放http的80端口)
(2)单向性。只有客户端(Web浏览器)主动去联系服务器,而服务端无法主动联系特定的客户。

    这些Web特性将会导致哪些限制了?
(1)客户与客户之间无法实现直接的P2P。因为基于Web时,一个客户无法直接“找到”另一个客户,就更别提NAT穿透了。
(2)客户与客户之间的消息交互是“伪实时”的,所有的消息都必须通过服务器进行“被动”地中转。比如,当客户A要把某个聊天消息Msg发送给B时,它首先将msg提交给服务器,因为服务器无法主动找到B,所以服务器需要暂存这个Msg(比如放入数据库),等到B来请求时,才能将这个Msg转发。这就是“被动”的含义了。

    即使有这么多限制,我们仍然可以实现一个像模像样的基于Web的IM,这只是需要一些简单的技术/技巧。
(1)客户端使用Ajax技术实现页面局部刷新。如果每当有新消息来临或状态通知来临时,都需要整个页面刷新,这个Web IM一定不及格。
(2)客户端使用定时器不断的询问服务器是否有新的通知。比如是否有别人发给我的Msg、某个好友的状态是否发生的变化等,如果有,则向服务器提取这些信息。
(3)文件传输功能,仍然可以实现,同文字聊天消息一样。发送方先将文件上载到服务器,接收方通过轮询发现有传送给自己的文件时,则下载文件。
(4)视频聊天功能,仍然可以实现。首先是视频的捕捉、编码、解码,这可能需要在浏览器中嵌入类似ActiveX的控件。其次是视频数据的传递,可以采用与文件传输类似的方式。无疑,这种方式是非常的丑陋。
(5)群功能。简单思考一下,会发现这个实现起来比较简单。

    尽管,通过种种技巧,我们可以实现一个基于Web的IM,但是它还能当之无愧的称为“即时通讯”吗?从前面的分析我们可以看到,所有的P2P通信都是“伪”即时的,并且如此实现的IM的服务端在用户量稍微大一点的时候的负载可想而知(特别是视频聊天功能,服务器需要暂存多大的数据量?)。
    所以,据我所认识的来推断,基于纯Web的IM现在还没有办法做成产品(你自己写个玩玩当然没问题)。当然,也许在我的认识之外可能有更好的解决方案,如果你知道这样的解决方案,请一定要留言告诉我。
    我想,有一点是真的,那就是B/S永远也无法吞并C/S的所有领地,有很多应用一定还是非C/S不可的。
分享到:
评论
5 楼 u011487470 2016-11-07  
感觉就是知识采集一样,博主能不能整理一下
4 楼 bluky999 2013-12-27  
收集的资料挺多的 哈哈 
3 楼 newand 2012-03-31  
楼主分享的真详细啊!
2 楼 HelloJimmy 2011-10-13  
谢谢博主的分享,很全面
1 楼 RonQi 2010-10-21  
谢谢博主对于webIM的研究和资料共享,
目前腾讯推出了webQQ 2.0版本,web2.qq.com
不知博主还会继续研究吗?

相关推荐

    sparkweb IM即时聊天源码

    Sparkweb IM即时聊天源码是一款基于Web技术实现的在线聊天工具,主要特点是用户只需要通过浏览器即可进行实时的文字交流,而不支持文件传输和视频聊天功能。这个项目的核心是利用Web技术来构建一个简单、高效的即时...

    web IM 用异步实现的IM

    【标题解析】:“web IM 用异步实现的IM”这一标题主要指的是一种基于Web技术构建的即时通讯(Instant Messaging, IM)系统,它利用异步处理技术来提高性能和用户体验。在Web环境中,由于浏览器与服务器之间的交互受...

    web-im-1.4.11.zip_im_web im_视频聊天

    Web IM 是一种基于网页的即时通讯(Instant Messaging)解决方案,它允许用户在浏览器上实现文本聊天和视频通话功能,无需安装任何桌面客户端软件。在"web-im-1.4.11.zip"这个压缩包中,包含的是一个版本为1.4.11的...

    基于openfire + jwchat 的 WEB IM

    【标题】"基于openfire + jwchat 的 WEB IM"是一个集成项目,旨在实现一个基于网页的即时通讯(IM)系统。在这个系统中,Openfire作为服务器端的即时通讯平台,而jwchat则作为客户端的JavaScript库,两者结合提供了...

    基于web的即使聊天开题报告

    开题报告概述的是基于Web的即时聊天系统的开发设计,该系统旨在满足企业内部高效、安全的沟通需求。即时通讯(IM)技术的核心在于提供实时的信息传递,包括文字、文件、语音和视频交流,使得沟通效率大大提升。相较...

    IM-asp.rar_ASP WEB_asp IM_im_web IM a

    在给定的“IM-asp.rar”压缩包中,我们关注的是一个基于ASP技术实现的即时通讯(IM,Instant Messaging)系统。这个系统包含两部分:控制端和访问端,这使得用户可以实现在Web上的实时通信。 1. ASP基础: ASP是...

    基于Vue和Javascript的IM即时聊天Web应用设计源码

    基于Vue和Javascript的IM即时聊天Web应用设计源码,该项目包含116个文件,主要文件类型有40个vue前端文件,以及30个javascript文件。此外,还包括22个png图像文件,以及4个jpg图像文件。该项目是一个基于Vue和...

    IM即时通信,包含web端实现

    《基于NutzBoot和T-IO的Web IM即时通信系统详解》 在现代互联网应用中,即时通信(Instant Messaging,简称IM)已经成为不可或缺的一部分,它为用户提供了实时、高效的沟通方式。本文将深入探讨一个基于NutzBoot...

    Web Im / ASP + Access 源码

    【Web IM / ASP + Access 源码】是一款基于网页的即时通讯系统,设计灵感来源于MSN,它在网页上提供了类似MSN的聊天体验。这款应用的主要功能包括用户登录、注册、密码找回、实时聊天、添加好友、发送邮件、编辑个人...

    web-im-master.zip

    【标题】"web-im-master.zip" 是一个包含Web端即时通讯系统的项目压缩包,主要基于HTML5技术,利用Node.js后端服务与Vue.js前端框架,结合WebSocket协议来实现实时通信功能,特别是群聊功能。 【描述】该压缩包中的...

    iweb_im.rar_im689. com_iwebim_php 聊天_web im_在线聊天

    《iWeb_IM:基于PHP的Web在线聊天系统详解》 在互联网时代,实时通信成为了用户交互的重要组成部分。本文将深入探讨“iWeb_IM”这款基于PHP的Web在线聊天软件,它以其功能齐全、界面美观的特点,深受开发者和用户的...

    创建基于 Ajax 的 IM 客户端

    在本教程中,我们将探讨如何创建一个基于Ajax的即时通讯(IM)客户端,这使得用户能够在Web环境中进行即时消息交流,而无需传统IM客户端。这个客户端通过创建IM机器人(bot)和Web应用程序,将IM流量转化为HTTP流量...

    环信web-im demo

    1. **WebSocket协议**:环信Web-IM基于WebSocket协议,这是一种在客户端和服务器之间建立长连接的技术,允许双方实时、双向通信。相比于传统的HTTP请求,WebSocket能显著提高数据传输效率。 2. **身份认证**:在接...

    腾讯云IM web sdk

    腾讯云IM Web SDK是腾讯云提供的即时通讯解决方案的一部分,专为Web应用设计,允许开发者轻松地在网页上集成聊天功能。这个SDK遵循了eslint代码规范,确保了代码质量与可维护性,非常适合基于Node.js环境的开发工作...

    Web-mianshi-im

    【描述】中的重复内容"Web-mianshi-imWeb-mianshi-imWeb-mianshi-imWeb-mianshi-imWeb-mianshi-im"可能是输入错误,没有提供额外的信息,因此我们将主要基于"标签"和"压缩包子文件的文件名称列表"来解析知识点。...

    openfire + jwchat 的 WEB IM

    【标题】"openfire + jwchat 的 WEB IM" 是一种基于开源技术构建的即时通讯解决方案,它结合了Openfire服务器和JWChat客户端来提供Web端的聊天功能。Openfire是一款基于XMPP协议的实时协作服务器,而JWChat则是一个...

    web im comet

    在Web IM系统中,传统的HTTP协议是基于请求-响应模型的,这意味着客户端需要不断地发送请求来获取最新的信息,这可能导致大量的网络请求和服务器负载。而Comet则打破了这一模式,它通过长时间连接保持与服务器的通信...

    ThinkSNS扩展插件之WEB IM.rar

    业界领先的基于Erlang、JSONP技术构建的WebIM消息服务器,与Facebook IM相似的技术架构,可集群支持百万并发用户。 安装同普通插件安装方法相同。需要注意的是: 1、安装后不能马上使用需要先进入插件管理里...

    基于小米即时消息云服务MIMC的免费Web IM设计源码,支持离线消息和emoji表情

    本项目是一款基于小米即时消息云服务(MIMC)构建的免费Web即时通讯系统源码,支持离线消息推送及emoji表情功能。源码包含54个文件,涵盖11个JavaScript脚本、10个JPG图片、6个CSS样式表、5个HTML页面、6个Java类...

    web课程设计-基于Java web的博客系统(源码+数据库+报告).zip

    因此,基于Java Web技术开发和设计的博客系统,运用MVC开发模式,Eclipse + Myeclipse集成开发环境,数据库技术等设计了博客系统。 本次课程设计主要阐述了不同用户对博客的不同管理,对管理员来说,有博主管理、...

Global site tag (gtag.js) - Google Analytics