QQ没出之前用什么聊天工具,第1张

在QQ之前有:Anychat、Skype、FastMsg、Jabber、IRC、ICQ、MSN。

在QQ之后有:飞信、百度HI、商讯BB、阿里旺旺、EE。

聊天工具又称IM软件或者IM工具,主要提供基于互联网络的客户端进行实时语音、文字传输。从技术上讲,主要分为基于服务器的IM工具软件和基于P2P技术的IM工具软件。

腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。

Jabber对于即时消息是一个开放的、基于XML的数据模型和协议。联系不断增加的基于Jabber开放资源和商业产品的数目,这种协议提供了摆脱即时消息服务器所有权束缚的一种方法。多种多样的开放资源Java APIs能够帮助你建立基于Jabber的服务器并将即时消息整合到你的应用程序中去。在这篇文章中专门阐述了这一点。

即时消息作为个人——个人通迅工具取得了显著的成功。在有些地方它已经作为在线联系的首选方法取代了email。现在,开发者正将这一技术应用到应用程序——个人和应用程序——应用程序通迅上。

直到最近,也只有少数服务提供商掌握了这一技术。通常流行的即时消息服务是建立在所有权协议基础上的通迅孤岛。实施面临一个困难的决策:支持多协议或锁定到一个单独的。不管哪种选择,实现都必须依赖一个属于即时消息(IM)服务提供商的服务器。

开放式协议能够帮助开发者摆脱所有权陷阱。其优势有多种:开放协议鼓励竞争实现的发展(一些开放资源)。他们鼓励广泛采用一种公共协议,这样可以阻止通迅孤岛和服务供应的孤立主义方法的发展。用多种方法,开放协议使因特网成为可能。在即时消息领域,开放协议确保封闭系统及协议不会阻碍基于IM服务器的发展的互操作性。

Jabber是一种针对即时消息和现场服务的开放协议。作为一个公共协议的最主要的侯选者,Jabber有潜力打破所有权在即时消息服务的控制。

这篇文章将解释如何实践发送简单Jabber消息和开发一个简单的基于开放标准及开放资源APIs和产品的布告服务器。

为什么使用Jabber

Jabber标准和结构帮助创建一个分布式的IM系统,使人联想到分布在因特网上的email系统,用户在本地连接到这些系统。这个方法直接与象AIM(AOL即时信使)、ICQ、MSN(Microsoft网络)及Yahoo这样的流行服务提供商提供的单一系统结构作对,在那里一个单独的中央服务器或集中服务器组提供消息服务。Jabber在其他情形也类似于email结构:Jabber使用一个几乎与基本SMTP(简单邮件传输协议)方案一样的地址方案确定它的终点(人,机器,软件)地址。例如,myname@elogexcom是一个有效的Jabber地址,或使用Jabber说法叫JID(Jabber ID)。因为这些原因,基于Jabber的系统衡量起来好于已存在的专有系统。加之,对于专有即时消息服务的网关允许的协议是必需的。

多种多样的Jabber服务器,包括我们在这篇文章中使用的其中之一,都是自由可使用的,意思就是说你不再需要依赖一个第三方IM服务提供商(第三方Jabber服务对于那些要求第三方主机服务的来说也是有用的)。

标准化

当讨论Jabber标准的益处时,我应该提及IETF IM标准的工作。在写这篇文章时,其IMPPWG(即时消息和现场协议工作组)已有多个RFC有效,其中最重要的是:

·RFC 2778:现场和即时消息模型

·RFC 2779:即时消息/现场协议要求

IMPPWG已经起草了一个名叫CPIM(公共现场和即时消息)协议的因特网标准。Jabber协议也是一个草拟的因特网标准,但不是IMPPWG工作的部份。

Jabber在哪儿适合这一标准工作呢?依照Jabber网站,Jabber是“承诺完全支持任何开放实时消息协议,包括IETF协议”。如果当对于这个IETF协议的支持增长时,Jabber打算将自己定位为IETF协议的领导开放资源的平台。到目前为止,IETF的工作更多地主要集中在收集要求上而不是执行。暂时,Jabber仅是一个带有重要开放资源支持的开放即时消息和现场服务协议。结果,它成为开放即时消息事实上的标准。

另一个值得密切注意的竞争对手是Sun微系统的Jxta协议,另一个基于XML针对peer-to-peer(P2P)应用程序开发者的协议。各种各样的Jxta实施在今天已经能够被提供。但是,由于其起源相对较近,Jxta比起Jabber只有很少的牵引力。

下载并安装

要开始使用Jabber,你首先需要下载必要的工具:你需要一个Jabber服务器,一个Jabber客户端,一个帮助管理和隐藏一些复杂socket处理的API,XML语法分析,消息创建等等。

Jabber服务器

为了运行Jabber,你选择的Jabber服务器不能有问题,自从他们都接受了标准Jabber XML及与终端应用程序通迅以释放负荷,其也是标准Jabber XML。Jabberd,最初的Jabber服务器,是开放资源(但不是基于Java),安装配置简单并在多数平台上都有效,包括Unix、Linux、Windows和Mac OS X。JabaServer开放资源方案也值得提及,但现在,这些基于Java的方案仍不如Jabberd成熟。同时,JabaServer安装不怎么简单易懂,因为你必须下载、安装并配置一个第三方数据库,加上创建必需的数据库规划。

对于这篇文章的例子,我选择Jabberd。当二进制及源下载对于jabberd都有效时,我就不在这儿描述怎样建立一个源发布。除非你真想自己编译,可以从jabberd 主页下载二进制发布。在Windows平台上安装是相对容易的。发布是一个exe程序,按照安装向导一步一步执行。

安装完成后,你无需配置。在Windows2000,不要求配置。只要双击二进制程序就可启动服务器。

用户代理/客户

我决定使用Exodus客户端,对于这个方案这是另一个开放资源技术。我尤其喜欢Exodus的调试标签,可以允许你正确地查看客户发送和接收的XML。另外你能够作为纯粹的XML键入Jabber消息并将它们发送给服务器。所有这些都证明用Jabber协议和服务器测试的有用性。

Exodus的安装简单易懂。下载Exodus 压缩文件(我在文章中使用的是06版本)。将文件直接解压到你想要安装客户端的目录。在这个版本中,文件是些简单的二进制文件和一个dll文件。你可以从 Muse 主页下载Muse API。

发送你的第一个Jabber消息

要发送一个Jabber即时消息,你必须初始化Muse Jabber API。通过创建一个JabberContext 类的实例来完成,接下来使用内容作为一个参数到Jabber session factory类的createSession()方法:

1 //初始化Jabber context

2 JabberContext jabberContext = new JabberContext("user", "pass", "localhost");

4 //创建一个Jabber session factory的实例

5 Jabber jabber = new Jabber();

6 //创建新会话

7 JabberSession jabberSession = jabbercreateSession(jabberContext);

上面的例子在第2行显示了一个新context的创建。JabberContext存储了指定的用户相关信息(用户名、密码、用户地址)以及稍后要使用context建立session时包含的一个唯一的会话标识。为了阐述意图,我直接使用了username、password和server。

在第5行,一个Jabber session factory被创建,我们在第7行使用它创建了一个新的JabberSession,Muse进入由Jabber服务器提供的服务的主要接口。服务器的主要服务是:

·连接服务: 从Jabber服务器连接和断开

·用户服务: 针对用户鉴定及注册

·现场服务: 接收从其它用户/服务来的及你自己广播的现场信息

·登记表服务: 密友列表或地址薄

·聊天服务: 发送多种类型的消息—组聊、私聊、标题等等

·服务器服务: 获得与由这个Jabber服务器提供的服务相关的信息

·客户服务: 获得关于其他用户的信息,比如用户登录的最后时间

现在我们已经有了一个已经初始化的Jabber session,我们能够用它在我们才创建的JabberSession对象中使用connect()方法去连接到Jabber 服务器:

8 //连接到服务器

9 jabberSessionconnect("localhost", 5222);

要连接到一个Jabber服务器,我们指定地址及在指定服务器上的机器端口号。标准来说,缺省Jabber端口是5222。

现在JabberSession已经连接到服务器,我们能够在我们的服务中用login()方法登录:

10 //登录到Jabber服务器

11 jabberSessiongetUserService()login();

在第11行,我们使用JabberSession获得一个到UserService的引用,接下来在我们服务中调用login()方法。注意方法自身不指定任何用户信息。当在上面第7行JabberSession被创建时login()从与JabberSession相关的JabberContext中获得这些信息。

现在我们已经成功登录到Jabber服务器,我们能够开始发送和接收消息。下面代码段显示了如何构造一个简单的标题风格的消息:

12 //构造测试消息

13 JabberChatMessage msg = new

14 JabberChatMessage(JabberChatMessageTYPE_HEADLINE);

15 msgsetSubject("Hello world");

16 msgsetBody("Hello world");

17 msgsetTo("user2@localhost");

在第13行,我们创建了一个JabberChatMessage实例。单个参数指定了我们要求的消息类型:TYPE_HEADLINE。JabberChatMessage类的名字容易引起误解,实际上,它可以用来包含在Jabber协议中定义的消息的任何四种类型—普通、聊天、标题及错误。在第15行,setSubject()和setBody()分别指定主题和内容。最后,setTo()在第17行设置消息接收器的JID。

在封装下,JabberChatMessage将所有这些信息转换成一个内在的DOM(文档对象模型)树,这样当我们已经准备好发送消息给Jabber服务器时能够轻松产生XML。

最后步骤:用sendMessage()方法发送消息:

18 //发送消息

19 jabberSessionsendMessage(msg);

在封装下

依据上面例子所得的事实,Muse API有效地隐藏了与连接管理和XML语法分析有关的所有细节,因此允许你集中精力在手边的任务上:创建一个消息服务。然而,理解一些基础协议交换证明是有用的。让我们关注一下当我们连接到服务器时发生的XML交换,登录,并象上面代码描述的一样发送消息。在下面的XML交换中,被客户接收的消息(我们例子代码)带了RECV前缀,送到服务器的消息带有SEND前缀:

SEND: <xml version="10" encoding="UTF-8" >

<stream:stream to="localhost"

xmlns="jabber:client"

xmlns:stream="http://etherxjabberorg/streams">

RECV: <stream:stream from="localhost" id="3D160545">

所有的Jabber交换都发生在一个XML流的上下文。在我们客户与Jabber服务器之间连接的生命期间,两个完全的XML文档在一个时间传输一个片段。上面显示的最初交换允许客户开始发送XML流文档到服务器并且服务器开始发送XML流文档到客户。

下面,一个要求鉴定的信息被发送给服务器:

SEND: <iq xmlns="jabber:client" type='get' id='id_10028'>

<query xmlns="jabber:iq:auth">

<username>user</username>

</query>

</iq>

RECV: <iq xmlns="jabber:client" type='result' id='id_10028'>

<query xmlns="jabber:iq:auth">

<username>user</username>

<password />

<digest/>

<sequence>482</sequence>

<token>3D15E63A</token>

<resource />

</query>

</iq>

在用户鉴定程序前述那段显示了第一次交换。开始,客户向服务器询问哪种鉴定方式对于给定用户是有效的。服务器段用下面的鉴定方法回答:

·Plain 文本:<password />标签

·零知识鉴定:使用<sequence>和<token>标签

·<digest/>:象plain文本,但密码是SHA-1 (安全无序运算法则)-用用户的plain文本密码进行编码

我们实际上使用<digest/>,象下面代码段描述的一样:

SEND: <iq xmlns="jabber:client" type='set' id='id_10030'>

<query xmlns="jabber:iq:auth">

<username>user</username>

<hash>425c73373237061edcc5f23ba239c6cc69556f5c</hash>

<resource>Home</resource>

</query>

</iq>

RECV: <iq xmlns="jabber:client" type='result' id='id_10030'></iq>

在这一点,用户连接到服务器并能够开始发送和接收消息:

SEND: <message xmlns="jabber:client" type='headline'

id='id_10032' to='user2@localhost'>

<thread xmlns="jabber:client">id_10033</thread>

<subject xmlns="jabber:client">Hello world</subject>

<body xmlns="jabber:client">Hello world</body>

</message>

上面片段显示了我们发送给接收者user2@localhost的测试标题消息。

你可能已经注意到在前述协议段有一个重复出现元素:ID标签。因为session能够由多个异步会话组成,ID标签匹配查询并响应。

接收消息

自从这篇文章的主要方向是向你显示如何开发一个报警系统,我就很少注意消息接收。然而,为了完整性的利益,我应该讨论在Muse API中处理接收消息的一些有用特性。另外,因为报警服务是被登录到Jabber服务器的用户执行的,你能够适当地期望一些消息接收者试图与发送者通信。

Muse使用一个listener附在session上以接收进入消息的提示。下面代码显示了如何创建一个listener并将其附到session——listener实际上附加到连接上,但自从我们的接口是在session级别并且JabberSession类有一个便利的方法添加一个listener,我们就将其附加到session:

1 jabberSessionaddMessageListener(

2 new JabberMessageListener() {

3 public void messageReceived(JabberMessageEvent event) {

4 if (eventgetMessageType() == JabberCodeMSG_CHAT ) {

5 JabberChatMessage msg =

6 (JabberChatMessage)eventgetMessage();

7 JabberChatMessage reply = new

8 JabberChatMessage(JabberChatMessageTYPE_HEADLINE);

9 replysetTo(msggetFrom());

10 replysetSubject("Re: "+msggetSubject());

11 replysetBody(

12 "I'm just a sender: please send messages to someone else");

13

14 //发送消息

15 jabberSessionsendMessage(reply);

16 }

17 }

18 }

19 );

客户能够添加几个消息listeners,每次一个消息被接收它们都要被调用。典型的,你为要处理的每一个类型的消息添加一个listener。另一个选择:为同一种消息类型但在那些消息中的每一种不同的行为添加多个listeners。然而另一种选择将添加一个要处理所有消息类型的listener。选择依赖于你想完成什么。

在上面的例子中,一个单独的listener被附加。Listener必须是实现JabberMessageListener接口的类的一个实例。这个接口要求一个要被执行的单个方法: void messageReceived(JabberMessageEvent)。当一个消息从服务器被接收时这个方法将被调用。在例子代码中,messageReceived()方法首先检查在第4行接收的消息类型。自从Jabber用户代理使用了MSG_CHAT类型发送消息,就只对这种类型消息才感兴趣。在第5行,Jabber消息从JabberMessageEvent 提取。在第9行通过设置收件人接收消息被用来构成一个给消息发送者的回复并且在第10行拷贝接收消息的主题。一个缺省错误文本被作为消息体在第11行被设置,并且,在第15行,消息使用前面例子同样的方法利用JabberSession对象的sendMessage()方法传输。

试试Jabber

这篇文章提供了一个对于Jabber协议及少量你能够将这一技术应用到你的应用程序中去的开放资源方案的基本介绍。对这个协议有用的应用程序多种多样,并不限于传统P2P感觉的即时消息领域。例如,joggerjabberorg提供的Jogger,一个允许你通过发送一个消息给Weblog应用程序(blog)就能更新个人网络杂志的有趣服务。Jabber在用户服务应用程序及其它结构的协作类型应用程序同样有很大的影响。

象上面例子所显示的一样,你使用一个API如Muse或JabberBeans在少许几行Java代码中就能够完成即时消息功能。记住我不能掩盖一些Jabber其它重要的特征,如现场服务和登记表管理,这些在使用时都是相关的。另一个重要的特征是Jabber服务器的模块性和可扩展性,它允许一个开发者创建新的服务直接整合进服务器。

http://wikijabbercnorg/space/start

IM

InstantMessaging(实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。大部分的即时通讯服务提供了状态信息的特性——显示联络人名单,联络人是否在线及能否与联络人交谈。目前在互联网上受欢迎的即时通讯软件包括QQ、MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ等。

OPERA

Opera起初是一款挪威Opera Software ASA公司制作的支持多页面标签式浏览的网络浏览器,由于新版本的Opera增加了大量网络功能,官方将Opera定义为一个网络套件。目前官方发布的个人电脑用的最新稳定版本为9258827。

Opera支持多种操作系统,如Windows、Linux、Mac、FreeBSD、Solaris、BeOS、OS/2、QNX等,此外,Opera还有手机用的版本,在2006年更与Nintendo签下合约,提供NDS及Wii游乐器Opera浏览器软件;也支持多语言,包括简体中文和繁体中文。

Opera还提供很多方便的特性,包括Wand密码管理、会话管理、鼠标手势、键盘快捷键、内置搜索引擎、智能弹出式广告拦截、网址的过滤、浏览器识别伪装和超过400种可以方便下载更换的皮肤,界面也可以在定制模式下通过拖放随意更改。下载一个大约10M的扩展以后,它甚至可以让你用语音控制以及阅读网页(英文)。而以上的这些,包括右键菜单都是可以由用户自定义的。

Opera支持包括SSL 2/3以及TLS在内的各种安全协议,支持256位加密,可以抵御恶意代码攻击、钓鱼攻击等网络攻击。而其网页渲染速度也是当今速度最快的。它支持W3C标准 ,此外它还可以作者模式和用户模式让有经验的使用者控制浏览网页的结构和字体等。

ICQ 聊天软件,名称来自I seek you (我找你)

网上寻呼机,它支持在 Internet上聊天、发送消息和文件等

MSN

MSN 全称 MICROSOFT SERVICE NETWORK 微软网络服务

MSN Messenger的最新版本是Windows Live Messenger 85

MSNSPACE就是指对应的个人空间

TM

TM指软件产品——Tencent Messenger(简称TM)。 这是腾讯公司为了应对微软Live Messenger的挑战而推出的一种面向办公人员,具有办公特色的即时通讯产品,其具有安全实用的在线企业、电子名片、TM小秘书、视频语音、消息加密传输等强大功能,并兼容腾讯的QQ,很受办公用户的欢迎。

RTX

腾讯通RTX(Real Time eXchange)是腾讯公司推出的企业级即时通信平台。企业员工可以轻松地通过服务器所配置的组织架构查找需要进行通讯的人员,并采用丰富的沟通方式进行实时沟通。文本消息、文件传输、直接语音会话或者视频的形式满足不同办公环境下的沟通需求。

WEB20

“Web 20”的概念开始于一个会议中,展开于O'Reilly公司和MediaLive国际公司之间的头脑风暴部分。所谓互联网先驱和O'Reilly公司副总裁的戴尔·多尔蒂(Dale Dougherty)注意到,同所谓的“崩溃”迥然不同,互联网比其他任何时候都更重要,令人激动的新应用程序和网站正在以令人惊讶的规律性涌现出来。更重要的是,那些幸免于当初网络泡沫的公司,看起来有一些共同之处。那么会不会是互联网公司那场泡沫的破灭标志了互联网的一种转折,以至于呼吁“Web 20”的行动有了意义?我们都认同这种观点,Web 20会议由此诞生。

2001年秋天互联网公司(dot-com)泡沫的破灭标志着互联网的一个转折点。许多人断定互联网被过分炒作,事实上网络泡沫和相继而来的股市大衰退看起来像是所有技术革命的共同特征。股市大衰退通常标志着蒸蒸日上的技术已经开始占领中央舞台。假冒者被驱逐,而真正成功的故事展示了它们的力量,同时人们开始理解了是什么将一个故事同另外一个区分开来。

在那个会议之后的一年半的时间里,“Web 20”一词已经深入人心,从Google上可以搜索到950万以上的链接。但是,两窆赜赪eb 20的含义仍存在极大的分歧,一些人将Web 20贬低为毫无意义的一个行销炒作口号,而其他一些人则将之理解为一种新的理念。

Web20是2003年之后互联网的热门概念之一,不过目前对什么是Web20并没有很严格的定义。一般来说Web20(也有人称之为互联网20)是相对Web10的新的一类互联网应用的统称。Web10的主要特点在于用户通过浏览器获取信息,Web20则更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者

1腾讯云背后公司是做社交出身的,20多年前就开始做社交了,比如QQ。 因此腾讯是一家有社交基因的公司,几十年的技术积累,让腾讯云IM的底层研发技术和稳定性在全世界范围内都是超一线水平。 如果你要买腾讯云,并且

2腾讯云IM有腾讯云做支持。 大家都知道我们前端的消息发送和接收,都是通过服务器来处理,所以服务器的稳定性是非常关键的,而腾讯云

3腾讯云IM典型案例 国内微信和QQ都是用的腾讯云IM,这个就不多说了。 接下来我教你如何

im服务器是instant message服务器的简写。

即时通信(instant message,IM)是指能够即时发送和接收互联网消息等的业务。即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

即时通信已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。微软、腾讯、AOL、Yahoo等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » QQ没出之前用什么聊天工具

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情