Vysper服务聊天环境搭建
注意:内置的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;
});