[项目] 基于XMPP的Web IM

平台:Windows 7

安装准备

  • 下载Openfire
  • 下载Strophe.js
  • 下载Nginx或者Apache并安装配置:只需一个,作为80端口服务的代理转发服务器(本文没有测试Apache)

安装Openfire(当前版本3.8.2)

普通安装包, 像正常安装软件一样安装就行了

1

首次需配置, 后面仍可在管理控制台进行更改

goingmerry为我的主机名, 相当于localhost

2

3

4

5

需要打开OpenFire的http-binding. 具体为登录后台管理界面。

服务器 -> 服务器设置 -> Http绑定(英文界面:Server -> Server Settings -> Http Binding)

6

  • 启用 - 客户端能使用HTTP绑定连接到这台服务器
  • Script Syntax - Enabled - Allows BOSH Clients With Limited Access to Connect to the Server
  • 端口按默认的。

安装Spark(当前版本2.6.3), 用于测试

7

下面两图设置是对应的

8

9

可在Spark中建立新帐号

10

Nginx的配置

下载Nginx(当前版本1.5.1): http://nginx.org/en/download.html

打开nginx的配置文件conf/nginx.conf,增加如下行:

location / {
    root html;
    index index.html index.htm;
}
# 添加的-----Begin-----
# location /http-bind { 原来用这个成功的, 这回用的下面这个成功的..
location ~ ^/http-bind/ {
    proxy_pass http://127.0.0.1:7070;
    proxy_buffering off;
    proxy_redirect off;
    proxy_read_timeout 120;
    proxy_connect_timeout 120;
    tcp_nodelay on;
    keepalive_timeout 55;
}
# 添加的-----End-----

启动nginx: 打开命令行,进行nginx目录,输入start nginx

Strophe的示例程序运行

将下载的strophejs文件解压至Ngnix的html文件夹中,在strophejs/examples文件夹中有一些示例文件,修改"*.js"文件中的BOSH_SERVICE'/http-bind/'即可。(这里有个问题,示例程序中使用的jQuery有点过时,加载较慢,手动下载jQuery进行替换,能加快载入速度)

这里以echobot.js为例:

编辑echobot.js,修改第一行为:

var BOSH_SERVICE = '/http-bind/';

在浏览器中打开:http://localhost/strophejs/examples/echobot.html

使用Openfire中的用户进行登录, 点击连接成功后, 如图.

11

Apache的配置

httpd.conf中加入下面几行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests Off
ProxyPass /http-bind http://127.0.0.1:7070/http-bind/
ProxyPassReverse /http-bind http://127.0.0.1:7070/http-bind/

注:需要apache有编译proxy模块

测试我的项目

我的项目实现了许多常用功能, 包括群聊, 状态设置, 个人名片等..

代码未整理, 整理后再传到GitHub上

与Spark进行通信, 如图

12

参考文档