微博平台StatusNet研究(5):支持Jabber/Gtalk

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

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

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

2、下载XMPPHP
如果您已按“ 系列(2)基本安装”或者“ 系列(4):快速安装”做了配置,那么这步骤已经完成,如果尚未做设置,请参考进行设置。

3、修改配置文件
在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 ;
复制代码

 


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

5、修改部分代码
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 ' ));
复制代码

 


6、支持接收消息
做完前面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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值