Vysper服务聊天环境搭建

作者:陆金龙    发表时间:2017-03-18 16:49   


注意:内置的BOSH连接通常只能与运行他们的服务器通信,web网站和xmpp服务必须部署在同一台服务器上。

1.编译Vysper

1.1安装Maven环境

请参考:Maven简介及环境配置

1.2 eclipse中导入了vysper项目

下载vysper项目源码:http://apache.fayea.com/mina/vysper/0.7/vysper-0.7-src.zip。

导入Maven工程到Eclipse(pom.xml是Maven工程的配置文件)

 

1.3 编译项目

使用maven的install命令编译并安装项目到本地仓库。

项目编译完成后,被安装到本地仓库,如下图所示的目录:

vysper-0.7-bin下的vysper-0.7就是部署Vysper服务的文件。

bin目录下的run.bat就是启动服务的可执行文件

 

也可以下载vysper的发布版本直接使用:http://apache.fayea.com/mina/vysper/0.7/dist/vysper-0.7-bin.zip

2.部署和配置

2.1 将Vysper部署到服务器

将vysper-0.7-bin下的vysper-0.7目录拷贝到服务器上。

服务器防火墙添加端口入站规则或者关闭防火墙。需开放5222(vysper服务端口),5280(BOSH连接器端口)等端口。

IM web网站也必须与vysper服务安装部署在同一台服务器上。

由于BOSH不能跨域连接(包括不能使用二级域名,同样视为跨域),可挂在主站下,以虚拟目录转为应用程序的方式部署。

2.2 修改Vysper服务的配置项

vypser-0.7的配置文件是config目录下的spring-config.xml

2.2.1默认账号配置

addUsers下constructor-arg 中预置3个账号,作测试用。

2.2.2 Bosh连接器配置

需要去掉spring-config.xml中以下两处的注释:

通过访问http://localhost:5280/bosh/可测试配置是否生效。

去掉注释前,网址不可访问:

去掉注释后,提示仅允许通过post访问,表示bosh可以访问到了:

 

注意:内置的BOSH连接通常只能与运行他们的服务器通信。即web网站和xmpp服务同时部署并运行在同一台服务器上时,才能使用BOSH连接。

要是web服务器通过BOSH以http方式连接xmpp服务,须在配置文件中将与BOSH相关的配置的注释去掉,并将端口改为合适的值,如:5280。

3.启动Vysper服务

运行vysper-0.7中bin目录下的run.bat  

端口冲突处理:

如果报错,提示vysper address already in use,则在cmd窗口使用命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的5222端口,其进程Id为2868。

在任务管理器中查看Id为2868的进程,找到程序tomcat9.exe,先停止该进程,再运行vysper,ok。

4.连接测试

服务器 :localhost

账号:admin@vysper.org  admin

user1@vysper.org  user1

user2@vysper.org  user2

4.1 客户端连接

在pandion、spark和C#测试客户端设置

(1)服务器需设置为localhost 或127.0.0.1

(2)登录账号 则使用 用户名@vysper.org(spark客户端不带@vysper.org)

(3)聊天账号 收发消息时,自己账号和对方账号使用用户名@vysper.org

4.2网页连接

(1)本机测试

$(document).bind('connect', function (ev, data) {

    var conn = new Strophe.Connection("http://localhost:5280/bosh/");

    conn.connect(data.jid, data.password, function (status) {

        if (status === Strophe.Status.CONNECTED) {

            $(document).trigger('connected');

        }

        else if (status === Strophe.Status.DISCONNECTED) {

            $(document).trigger('disconnected');

        }

    });

    Hello.connection = conn;

});

(2)服务器环境测试

部署到服务器上,http://localhost:5280/bosh中的localhost应改为服务器的ip或域名。如果服务器域名为iprogram.com.cn,则Bosh连接器的地址为http://iprogram.com.cn:5280/bosh。以下是部署到服务器的连接代码和效果:

$(document).bind('connect', function (ev, data) {

    var conn = new Strophe.Connection("http://iprogram.com.cn:5280/bosh/");

    conn.connect(data.jid, data.password, function (status) {

        if (status === Strophe.Status.CONNECTED) {

            $(document).trigger('connected');

        }

        else if (status === Strophe.Status.DISCONNECTED) {

            $(document).trigger('disconnected');

        }

    });

    Hello.connection = conn;

});