- 浏览: 75726 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
cute.spring:
thanks!
超全的大型网站架构技术文章整理下载 -
秦时明月黑:
林哥善于总结,大人物
web产品线上问题分析和处理方法 -
healer_kx:
partitions的限制是1024,文档说的,不知道open ...
mysql分区报错:Too many partitions (including subpartitions) 处理 -
jiangnan2112:
找了个文章,突然发现头像熟悉,
jQuery插件Lazy Load作延迟加载图片的效果 -
boting:
谢谢分享,学习了先...
web性能优化(一)弱请求处理
Web based Instant Messenger
基于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
支持特性:文件传输,Meebo Rooms,
前端Ajax,后端Comet,http server为lightTPD
Meebo的Load Balancing:http://blog.meebo.com/?p=127
服务器端用fastCGI实现(C/C++),
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
发表评论
-
[视频]QQ空间技术架构之深刻揭秘------技术体会
2012-06-02 22:52 1436[文章作者:狂奔的鹿(陆松林) 本文版本:v1.0 转载请注 ... -
平时整理的非常实用的linux命令
2012-05-22 16:06 1275[文章作者:狂奔的鹿(陆松林) 本文版本:v1.0 转载请注 ... -
web产品线上问题分析和处理方法
2012-05-15 16:48 1023[文章作者:狂奔的鹿(陆松林) 本文版本:v1.0 转 ... -
线上产品的问题分析和处理方法
2012-05-15 16:37 0作WEB产品的技术人员, ... -
12306技术讨论 (附PPT下载)
2012-03-03 22:01 186712306技术讨论, 画了好几张图,共观摩。 http:// ... -
nginx的url rewrite配置的小错误
2012-01-11 16:23 2308[文章作者:狂奔的鹿(陆松林) 本文版本:v1.0 转 ... -
探讨Web优化 (附PPT下载)
2011-11-15 08:51 991--探讨Web优化--- http://static.sli ... -
缓存基础 (附PPT下载)
2011-06-16 20:41 999这是一次内部培训讲的PPT, 一起补补基础,很多是个人经验 ... -
jQuery插件Lazy Load作延迟加载图片的效果
2010-03-23 11:53 6351QQ空间的邱跃鹏在其PPT里提到"按需加载&q ... -
超全的大型网站架构技术文章整理下载
2009-12-29 11:25 2515网上整理的,分享一下 目录:1、amazon2、eba ... -
JGroups 2.8.0 GA 发布,提供可靠多播(组播)的开发工具包
2009-12-28 21:37 1575近日,Bela Ban发布了JGroups 2.8.0 GA版 ... -
JVM启动参数大全
2009-11-09 18:35 1731jdk1.4.2 JVM官方地址:http://java.su ... -
一个老式的经典的游戏服务器架构
2009-11-05 15:47 1595请看如下图示: ... -
腾讯架构师访谈录
2009-11-04 23:08 2000提问嘉宾: 王速瑜, ... -
Berkeley DB(BDB)介绍
2009-10-26 10:48 3145Berkeley DB是一个开放源 ... -
关于WEB开源框架
2009-10-10 21:58 1110如今的WEB开源框架Struts,WebWork,EasyJW ... -
SOHU这几年一些门户级别的程序系统(C/C++开发)
2009-10-10 20:31 1274这段时间一直在弄海量数据,及时数据和高并发的东东; 转贴 ...
相关推荐
Sparkweb IM即时聊天源码是一款基于Web技术实现的在线聊天工具,主要特点是用户只需要通过浏览器即可进行实时的文字交流,而不支持文件传输和视频聊天功能。这个项目的核心是利用Web技术来构建一个简单、高效的即时...
【标题解析】:“web IM 用异步实现的IM”这一标题主要指的是一种基于Web技术构建的即时通讯(Instant Messaging, IM)系统,它利用异步处理技术来提高性能和用户体验。在Web环境中,由于浏览器与服务器之间的交互受...
Web IM 是一种基于网页的即时通讯(Instant Messaging)解决方案,它允许用户在浏览器上实现文本聊天和视频通话功能,无需安装任何桌面客户端软件。在"web-im-1.4.11.zip"这个压缩包中,包含的是一个版本为1.4.11的...
【标题】"基于openfire + jwchat 的 WEB IM"是一个集成项目,旨在实现一个基于网页的即时通讯(IM)系统。在这个系统中,Openfire作为服务器端的即时通讯平台,而jwchat则作为客户端的JavaScript库,两者结合提供了...
开题报告概述的是基于Web的即时聊天系统的开发设计,该系统旨在满足企业内部高效、安全的沟通需求。即时通讯(IM)技术的核心在于提供实时的信息传递,包括文字、文件、语音和视频交流,使得沟通效率大大提升。相较...
在给定的“IM-asp.rar”压缩包中,我们关注的是一个基于ASP技术实现的即时通讯(IM,Instant Messaging)系统。这个系统包含两部分:控制端和访问端,这使得用户可以实现在Web上的实时通信。 1. ASP基础: ASP是...
基于Vue和Javascript的IM即时聊天Web应用设计源码,该项目包含116个文件,主要文件类型有40个vue前端文件,以及30个javascript文件。此外,还包括22个png图像文件,以及4个jpg图像文件。该项目是一个基于Vue和...
《基于NutzBoot和T-IO的Web IM即时通信系统详解》 在现代互联网应用中,即时通信(Instant Messaging,简称IM)已经成为不可或缺的一部分,它为用户提供了实时、高效的沟通方式。本文将深入探讨一个基于NutzBoot...
【Web IM / ASP + Access 源码】是一款基于网页的即时通讯系统,设计灵感来源于MSN,它在网页上提供了类似MSN的聊天体验。这款应用的主要功能包括用户登录、注册、密码找回、实时聊天、添加好友、发送邮件、编辑个人...
【标题】"web-im-master.zip" 是一个包含Web端即时通讯系统的项目压缩包,主要基于HTML5技术,利用Node.js后端服务与Vue.js前端框架,结合WebSocket协议来实现实时通信功能,特别是群聊功能。 【描述】该压缩包中的...
《iWeb_IM:基于PHP的Web在线聊天系统详解》 在互联网时代,实时通信成为了用户交互的重要组成部分。本文将深入探讨“iWeb_IM”这款基于PHP的Web在线聊天软件,它以其功能齐全、界面美观的特点,深受开发者和用户的...
在本教程中,我们将探讨如何创建一个基于Ajax的即时通讯(IM)客户端,这使得用户能够在Web环境中进行即时消息交流,而无需传统IM客户端。这个客户端通过创建IM机器人(bot)和Web应用程序,将IM流量转化为HTTP流量...
1. **WebSocket协议**:环信Web-IM基于WebSocket协议,这是一种在客户端和服务器之间建立长连接的技术,允许双方实时、双向通信。相比于传统的HTTP请求,WebSocket能显著提高数据传输效率。 2. **身份认证**:在接...
腾讯云IM Web SDK是腾讯云提供的即时通讯解决方案的一部分,专为Web应用设计,允许开发者轻松地在网页上集成聊天功能。这个SDK遵循了eslint代码规范,确保了代码质量与可维护性,非常适合基于Node.js环境的开发工作...
【描述】中的重复内容"Web-mianshi-imWeb-mianshi-imWeb-mianshi-imWeb-mianshi-imWeb-mianshi-im"可能是输入错误,没有提供额外的信息,因此我们将主要基于"标签"和"压缩包子文件的文件名称列表"来解析知识点。...
【标题】"openfire + jwchat 的 WEB IM" 是一种基于开源技术构建的即时通讯解决方案,它结合了Openfire服务器和JWChat客户端来提供Web端的聊天功能。Openfire是一款基于XMPP协议的实时协作服务器,而JWChat则是一个...
在Web IM系统中,传统的HTTP协议是基于请求-响应模型的,这意味着客户端需要不断地发送请求来获取最新的信息,这可能导致大量的网络请求和服务器负载。而Comet则打破了这一模式,它通过长时间连接保持与服务器的通信...
业界领先的基于Erlang、JSONP技术构建的WebIM消息服务器,与Facebook IM相似的技术架构,可集群支持百万并发用户。 安装同普通插件安装方法相同。需要注意的是: 1、安装后不能马上使用需要先进入插件管理里...
因此,基于Java Web技术开发和设计的博客系统,运用MVC开发模式,Eclipse + Myeclipse集成开发环境,数据库技术等设计了博客系统。 本次课程设计主要阐述了不同用户对博客的不同管理,对管理员来说,有博主管理、...
标题“web-im.rar_React_im_im服务器_react_openfire”暗示了一个基于React的Web即时通讯(IM)项目,其中使用了Openfire作为后端服务器。这个项目可能包含了实现单聊和群聊功能的所有必要组件和配置。让我们深入...