StatusNet Jabber/Gtalk设置

来自站长百科
跳转至: 导航、​ 搜索

作为微博平台,支持通过IM发布、接收信息是基本功能之一,今天讲的就是如何让StatusNet支持Jabber/Gtalk

Jabber服务器可以使用Openfire等开源项目自行搭建或者使用现成的平台(如:Gtalk)。Jabber客户端,用PHP的开源项目XMPPHP实现。这里将以Gtalk及XMPPHP为例讲解StatusNet中Jabber/Gtalk的配置。

注册Gtalk账号[ ]

账号作为Jabber机器人,用于接收和发送消息,我注册的是用户是canbeing.com@gmail.com,假设密码为test。

下载XMPPHP[ ]

如果您已按“StatusNet基本安装”或者“StatusNet快速安装”做了配置,那么这步骤已经完成,如果尚未做设置,请参考进行设置。

修改配置文件[ ]

在config.php里做如下设置(以我的gtalk为例):

# xmpp using gtalk example
$config['xmpp']['enabled'] = true;
$config['xmpp']['server'] = 'gmail.com';
$config['xmpp']['host'] = 'talk.google.com';
$config['xmpp']['port'] = 5222;
$config['xmpp']['user'] = 'canbeing.com';
$config['xmpp']['encryption'] = false;
$config['xmpp']['resource'] = 'canbeingxmpphp';
$config['xmpp']['password'] = 'test';
$config['xmpp']['public'][] = 'canbeing.com@gmail.com';
$config['xmpp']['debug'] = true;

安装PHP扩展[ ]

需要安装启用PHP的openssl和mbstring扩展,因为Jabber的通信会用到TLS以及SASL

修改部分代码[ ]

statusnet 0.8.2 jabber部分代码有点问题,需要做些修改: 在lib/jabber.php里找到函数jabber_connect,将原来的

if (!$conn) {
    return false;
}
$conn->autoSubscribe();
$conn->useEncryption(common_config('xmpp', 'encryption')); 
try {
    $conn->connect(true); // true = persistent connection
} catch (XMPPHP_Exception $e) {
    common_log(LOG_ERR, $e->getMessage());
    return false;
}
$conn->processUntil('session_start');

改为

if (!$conn) {
    return false;
}
try {
    $conn->connect(true); // true = persistent connection
} catch (XMPPHP_Exception $e) {
    common_log(LOG_ERR, $e->getMessage());
    return false;
}
$conn->processUntil('session_start');
$conn->autoSubscribe();
$conn->useEncryption(common_config('xmpp', 'encryption'));

支持接收消息[ ]

做完前面5步,已经可以实现Jabber账号的绑定了,但由于B/S的程序不能保持Jabber账号一直在线,故无法接收消息。

statusnet提供了一个以daemon方式运行的php脚本在scripts/xmppdaemon.php,在命令提示符里运行如下全食即可打开一个窗口一直运行对应脚本。

C:\Inetpub\php-5.2.12-nts\php -c C:\Inetpub\php-5.2.12-nts\php.ini H:\13.PHP\04.WorkSpaces\statusnet\statusnet-0.8.2\scripts\xmppdaemon.php(具体路

径需要根据实际的PHP目录及StatusNet设置)

可能碰到的问题[ ]

1、验证时提示错误:Warning: stream_socket_enable_crypto() [streams.crypto]: this stream does not support SSL/crypto in H:\13.PHP\04.WorkSpaces\XMPPHP\XMPP.php

问题原因:未安装openssl扩展

解决方案:安装openssl扩展

2、Jabber验证时提示:Auth fail

问题原因:Jabber服务器、用户名、密码设置错误或者程序自身的bug

解决方案:按照上面步骤3进行Jabber相关配置或者按照步骤5修改部分代码

3、步骤6运行脚本时提示:Call to undefined function pcntl_fork()

问题原因:PHP未以fastcgi的方式运行,未能找到函数

解决方案:配置一个以fastcgi的方式运行的PHP来单独运行这个daemon

相关条目[ ]

参考来源[ ]

参考来源