首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区
|
用Jabber实现自己的既时通讯系统
随着计算机网络的普及,几乎每个网络用户都在使用着一种或者一种以上的IM(既时通讯系统),IM满足了人们通过网络进行即时通讯的需要,IM出现很久了,并不是一个新的东西,但在各种新 技术的推动下,IM本身也在不断发展,人们不但也可以通过手机、PDA使用IM,而IM也开始支持语音、视频、手机短信、游戏等功能。 常见的IM软件有很多,但我们国内用的比较多是腾讯QQ、MSN、ICQ了。但是这些IM的服务器端和客户端都是由一各自己的商业机构提供的,所以用户要依赖他们来提供IM服务。 那么可不可以自己架设一套属于自己的IM呢? Jabber正是这样一个开放源码而且功能强大的IM系统。Jabber是1998年开发出来的,它的信息采用XML格式,属于opensource,您可以免费的得到和使用它,并且可以对其进行二次开发。 Jabber有什么和QQ、MSN、ICQ不一样的功能呢? Jabber有一个QQ、MSN、ICQ等常见IM所不具备的功能,它可以做为一个代理来帮助Jabber的客户在Jabber上同时使用其它的IM系统,也就是说你只要打开jabber的客户端就可以登录到象ICQ、MSN、yahoo.message上面,并且能和它们收发信息。这样你以后可以不用打开几种不同的IM客户端,只要打开Jabber的客户端就行了,这样是不是很方便呢。 关于jabber更多的信息,可以访问jabber的网站,本文将重点讲如何在Linux上安装和配置Jabber服务,希望你可以借助此文用Jabber实现自己的IM。 下面就开始介绍如何安装一个IM。这个IM将有聊天室功能、同时也支持ICQ、MSN、yahoo.message。 安装环境 Jabber可以安装在多种操作系统上面。笔者用的是RedHat7.3,当然其它的Linux也可以安装Jabber的。另外如果你仅仅是想试试安装的话,至少要两台联网的电脑,否则的话,你需要要有一个真正的网络,Internet或者局域网都可以。如果是在internet上安装,需要有自己的域名和IP,这样就可以向Internet上的所有人提供Jabber服务了,就好象ICQ、MSN一样的,当然你肯定没有它们哪么强负荷能力了:)。如果在局域网中安装,那就只能在本地局域网使用了。 相关软件 Jabber相关的软件可以在jabber.org找到,或者通过google搜索。最好下载最新的版本,因为经常会有新的功能加入。这里用到以下软件。 jabber-1.4.2.tar.gzjabber服务器本身 conference-0.4.tar.gz icqv7-t-0.3.0pre2.tar.gz 安装Jabber Server Jabber的服务器端是用C写的,你需要用root的权限进行编译,因为它可能要用到一些只有root才能使用的库。 tar -xzpvf jabber-1.4.2.tar.gz -C /usr/local/ Jabber Server的主要配置文件是jabber.xml。它需要做一些设定,比如 <host>localhost</host>:服务器的主机名 为了安全,我们不以root的身份来运行jabber,而是创建一个名为jabber的用户。 #adduser jabber 以jabber身份启动Jabber Server su - jabber -c "/usr/local/jabber/jabberd/jabberd & " 安装Jabber Client Jabber有很多种Client,可以运行在各种平台下。 下载的Windows下的客户端软件,只要双击就开始安装了,不需要额外做设置已经可以用了。 安装好客户端后,你可以试着通过它去自己的Jabber Server上注册用户。当然你得至少注册两个用户,才能够模拟聊天的情形。除非你喜欢自言自语:) 安装聊天室的支持 这里笔者把conference翻译成聊天室,这样好象会有且助于QQ用户对比QQ的聊天室功能来理解。conference其实正是象QQ聊天室一样的东西。你需要安装conference才能实现此项功能。 tar -xzpvf conference-0.4.tar.gz -C /usr/local/jabber make完了之后,能看到conference-0.4/目录中生成一个文件conference.so.。这表示这次编译已经成功了。接下来就是对jabber.xml进行配置,加入conference服务。 conference分公用和私用两种,在type属性上指定。 在<jsm>的<browse/>项中加入声明一个本地的conference,大约是第220行左右。 定义一个私用的conference服务 <conference type="private" jid="private.localhost" name="Private Conferencing"/> 在<browse>之外定义服务 <service id=’private.localhost’> 定义一个公用的conference服务,与私用的conference服务有些不同。你可以把会议室定义上去 <service id=’conference.localhost’> 在<browse>项中增加以下行: <conference type="public" jid="conference.localhost" name="Public Chatrooms"/> 重启Jabber Server,conference服务才能生效。 安装用户目录JUD JUD是指Jabber用户目录,顾名思义,它提供了关于Jabber服务上注册用户的目录服务,通过它,可查询某个用户是否在某个jabber上注册过,或者他(她)的详细注册信息。 tar -xzpvf jud-0.4.tar.gz -C /usr/local/jabber make完了之后,能看到jud-0.4/目录中生成一个文件jud.so。这表示这次编译已经成功了。接下来就是对jabber.xml进行配置,加入JUB服务。 在<jsm>的<browse/>项中加入声明一个本地的Jud,大约是第220行左右。 <browse> 在文后加入 <service id="jud"> 重启Jabber Server,JUD才能生效。 安装自动用户目录Autojud autojud是一个perl编写的脚本。可以自动构造一个包含完整jabber注册用户列表的Jabber用户目录。对于一个企业内部的定期维护升级用户信息有用。 cd autojud 编辑autojud,给变量$jabberdir和$servername赋上正确的值。 $jabberdir = "/usr/local/jabber"; $userdir = "$jabberdir/spool/$servername"; $jabberpid = "jabber.pid"; 编辑Makefile,给变量INSTALLDIR赋上正确的值。 INSTALLDIR=/usr/local/jabber/autojud 此过程实际是安装程序用到的perl modules,也可以手工做。如果有提示说某此perl的module已经安装,则不要安装。 make install 在make时你可以要回答一些问题,整个过程实际是为autojud安装一些perl modules。make clean将清除一些无用的目录。 # @args = ( "kill -SIGINT `cat $jabberdir/$jabberpid`; sleep 1;" ); # @args = ( "su - jabber -c \"$jabberdir/jabberd/jabberd -h $servername&\"" ); 运行autojub 其间autojub会先停止jabber server,生成新的JUD后,再重新启动Jabber Server。这个过程通常很快,对用户的影响很小。 最后可以把这个程序加到cron中去,让它定期运行。 crontab -e 加上一句: 0 0 * * * /usr/local/jabber/autojud/autojud这样autojud,就算是好了。 安装对ICQ的支持 对其它IM的支持显然是Jabber的一个重要特点,这也是因为jabber是一个开放的开发平台,人们可以开发各种程序来扩充jabber的功能。正是有人开发了Icq的支持软件,所以我们才可以在jabber上使用icq。同理,如果你有兴趣,同样可以为现在jabber还不支持 的一些IM开发相应珠支持软件,比如QQ(官方网站上好象有一个QQ链接,不过好象打不开,强烈希望有了解QQ协议的朋友给jabber开发一个)。回到主题,对icq的支持相对要麻烦一些,因为它是依赖另外一些已有的icq的包。 在安装前先要装libsigc++和libicq2000。libsigc++可以找到rpm包,libicq2000可以找到tar包。 安装libsigc++ rpm -ivh libsigc-xxx-xx.rpm 安装libicq2000 ../configure --prefix=/usr/local/libicq2000 安装icqv7 icqv7-t-0.2.0pre2.tar.gz 修改jabber.xml 启动对icq的支持,要通过单独一个命令进行: /usr/local/jabber/icqv7/bin/icqv7ext -n icqv7ext -s password -h hostname 安装对MSN的支持 tar -xzpvf msn-transport.tar.gz run ./bootstrapvi /usr/local/jabber/jabberd/jabberd.h +42 vi /usr/local/jabber/jabberd/jabberd.h +42 >#include <pth.h> #include "pth-1.4.0/pth.h" ../configure --prefix=/usr/local/msn --with-jabberd=/usr/local/jabber MSN-t uses TCP port 1863 for incoming connections so you have to open this port if you use a firewall. make 根据README进行配置,建议以独立的进程运行。 安装对yahoo!message的支持 安装对yahoo!message的支持相对于icq、MSN要简单的多,不容易出错。安装中我只遇到过一次说是需要glib-devel包,我加装上去就顺利用完成了(所以建议大家在不熟悉的情况下,采用完全安装的Linux,这样出现找不到某个包的情况就会减少)。 tar -xzpvf yahoo-t-2.0.0-RC6.tar.gz -C /usr/local/jabber 根据README进行配置,建议以独立的进程运行 安装到现在,所有的服务已经安装好了,执行以下脚本来启动jabber及相关的icq/msn/yaho!oMessage服务 #!/bin/bash 相关链接
频道热门
热门新闻
|
精粹集锦
特别推荐
频道精选
|