tigase开发指南.docx

上传人:b****0 文档编号:17725662 上传时间:2023-08-03 格式:DOCX 页数:13 大小:3MB
下载 相关 举报
tigase开发指南.docx_第1页
第1页 / 共13页
tigase开发指南.docx_第2页
第2页 / 共13页
tigase开发指南.docx_第3页
第3页 / 共13页
tigase开发指南.docx_第4页
第4页 / 共13页
tigase开发指南.docx_第5页
第5页 / 共13页
tigase开发指南.docx_第6页
第6页 / 共13页
tigase开发指南.docx_第7页
第7页 / 共13页
tigase开发指南.docx_第8页
第8页 / 共13页
tigase开发指南.docx_第9页
第9页 / 共13页
tigase开发指南.docx_第10页
第10页 / 共13页
tigase开发指南.docx_第11页
第11页 / 共13页
tigase开发指南.docx_第12页
第12页 / 共13页
tigase开发指南.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

tigase开发指南.docx

《tigase开发指南.docx》由会员分享,可在线阅读,更多相关《tigase开发指南.docx(13页珍藏版)》请在冰点文库上搜索。

tigase开发指南.docx

tigase开发指南

tigase开发指南

tigase组件插件配置

tigase启动时会初始化并启动相关组件和插件,启动的组件或开通监听端口号或访问数据库或者创建线程池,默认有些组件和插件非必须,我们也用不到,为了避免资源浪费,需要在配置中注释这些组件。

组件如下表格所示,红字的组件说明:

tigase组件说明

Amp

高级消息处理

Bosh

提供客户端http长连接

c2s

提供客户端tcp连接

cl-comp

内置集群组件

eventbus

事件总线,内部处理

message—archive

消息归档

monitor

监控

muc

聊天室

proxy

代理

pubsub

发布订阅

s2s

tigase服务端节点之间交互

sess-man

会话管理

配置文件配置启动组件:

修改init。

properties

message—router/components/msg—receivers/id-names[s]=bosh,cl-comp,eventbus,s2s,sess-man

插件如下表格所示,红字的插件说明:

tigas插件说明

参数

说明

jabber:

iq:

register

注册服务

message—archive—xep—0136

消息归档

jabber:

iq:

auth

简单用户认证

urn:

ietf:

params:

xml:

ns:

xmpp-sasl

SASL协商

urn:

ietf:

params:

xml:

ns:

xmpp—bind

资源绑定

urn:

ietf:

params:

xml:

ns:

xmpp—session

session绑定

jabber:

iq:

roster

联系人名单管理

presence-state

xmpp顶级元素,上线广播

jabber:

iq:

privacy

隐身协议

jabber:

iq:

version

客户端版本

http:

//jabber.org/protocol/stats

是否发送统计信息,指向jabber。

org发送

startls

tls加密

msgoffline

离线消息

vcard-temp

临时的vCard

http:

//jabber.org/protocol/commands

管理virtualdomains的特别命令

jabber:

iq:

private

私有数据存储

urn:

xmpp:

ping

心跳检测

presence-subscription

发布订阅插件

domain—filter(basic—filter)

domain拦截器

amp(basic-filter)

高级消息处理

zlib(basic-filter)

zlib压缩

message—carbons(basic—filter)

将stanzas投递到用户指定的资源

disco(basic—filter)

服务发现

配置文件配置启动组件:

修改init。

properties

sess—man/plugins[s]=session-close,session—open,default-handler,urn:

ietf:

params:

xml:

ns:

xmpp-sasl,urn:

ietf:

params:

xml:

ns:

xmpp-bind,urn:

ietf:

params:

xml:

ns:

xmpp—session,jabber:

iq:

roster,jabber:

iq:

privacy,jabber:

iq:

version,http:

//jabber.org/protocol/stats,starttls,vcard—temp,http:

//jabber.org/protocol/commands,jabber:

iq:

private,urn:

xmpp:

ping,amp,disco,domain—filter,zlib,message-carbons,vcard-xep-0292,urn:

xmpp:

time

Tigase数据库表

Tigase用户信息、权限信息、离线消息信息、在线离线状态信息都存储在数据库中,但有些数据我们不需要让tigagse存储、更新,比如在线离线状态信息,如果每个用户登录、登出都让tigase更新表的字段,并发高了,显然数据库承受不了。

为了避免资源浪费也需要避免这些操作。

登录状态上线更新

上线状态更新是在验证用户名和密码时更新,验证功能是需要我们自定义的,仅需修改tigase验证模块的一小块代码即可。

下图贴出tigase源码修改方式.

登录状态下线更新

下线状态更新是在用户退出、连接断开等时更新,修改代码也比较简单。

tigase权限验证

云果登陆流程时需要验证权限,权限验证需要分匿名用户和企业客服两种,匿名用户默认验证都可以通过,企业客服需要验证是否在用户中心登陆成功。

企业客服登陆

1。

登陆用户中心,登陆成功后,用户中心会保存cookieid至缓存中

2.带着用户名、cookieid同tigase服务端建立连接

3.从缓存中获取验证信息

4.如果认证通过和tigase连接上

tigase的验证是需要我们自定义开发的,只需要在tigase权限验证模块修改即可。

tigase在线坐席获取

匿名用户登陆需要根据客户名分配一个在线坐席会话。

tigaseroster插件是用于返回好友列表,可以修改用来分配坐席列表。

插件的调用是在SessionManager中调用:

客户端获取好友列表:

variq=$iq({

type:

’get’,

id:

’getmyroster'

}).c(’query',{xmlns:

Strophe.NS。

ROSTER})

tree();

connection。

send(iq);

tigase消息转发流程

用户在发消息给客服时,如果客服不在线,需要分配给机器人客服,机器人客服是以tigase客户端方式使用的,并且为了负载均衡会有多个机器人客服,所以还需要分配。

分配这块功能需要修改tigasesessionmanage组件处理消息模块的一段代码。

Tigase所有的消息都会经sessionmanager进行处理。

Packet类中没有setStanzaTo方法需要修改加入

tigase离线消息存储

tigase在用户不在线时,会把消息存储在数据库中,默认是关系型数据库,这块我们是需要存储到hbase等nosql数据库中的,这块功能需要修改下源码tigase已经写好的离线消息插件。

此外tigase默认的离线消息存储是有条数限制的,需要修改配置文件

tigase用户连接断开通知客服

client与server连接断开,SessionManager会接收到断开消息,会话断开是通过SessionCloseProc插件实现。

断开通知客服需要在连接断开时,发一条消息给客服JID通知。

Packet类中没有setStanzaTo方法需要修改加入

tigase组件插件开发

tigase组件插件开发,官方开发文档有详细介绍,可直接阅读《tigase—DevelopmentGuide。

pd》,已上传上传到svn。

云果以后需要自定义一些组件、插件实现自定义功能.

tigase配置文件

云果基于tigase源码开发功能时,需要增加一些自定义的配置,关于配置文件模块,tigase是作为一个组件开发的,所以我们仅需要简单修改一下配置文件模块。

tigasessl

SSL(SecureSocketsLayer安全套接层),及其继任者传输层安全(TransportLayerSecurity,TLS)是为网络通信提供安全及数据完整性的一种安全协议。

TLS与SSL在传输层对网络连接进行加密。

Tigase支持ssl通信功能,底层使用NIO+JSSE实现。

1.启用ssl

修改init。

properties,增加配置

-—bosh—ports=5280,5281

bosh/connections/5281/socket=ssl

bosh/connections/5281/type=accept

注:

5280端口号用于正常通信,5281端口号用于ssl通信

2。

js连接tigasessl

由原来的访问地址http:

//ip:

5280改为https:

//ip:

5281即可正常访问。

注:

由于https请求浏览器需要可信证书才允许访问,否则会拒绝访问,需要把访问的https地址设置为可信才能访问或者加入可信证书。

导入pem文件至浏览器下面3会介绍。

3.ssl证书

tigase发布的包解压后,在certs/目录中包含了密钥和证书,其中后缀名位.pem是ssl钥匙包含了公钥和私钥匙,tigase启动时会为每个domain生成一个domain。

pem文件,如果不配置domain使用default。

pem文件.pem文件也可以使用openssl生成,上线系统建议自己生成。

pem文件可以导入至浏览器证书中,这样浏览器才不会禁止你的https请求.证书如下所示:

注:

上线系统外网使用ssl一般采用第三方的收费的商用证书,客户端导入证书非常shan麻烦,浏览器内部会有一些CAROOT证书,一般包含了常用的商用证书。

tigase负载均衡

Tigase从5.2.0版开始,引入了负载均衡功能,可以把终端访问用户重定向到最适合的集群节点上.此负载均衡功能依赖于see-other—host的XMPP流错误消息(streamerrormessage)。

此机制背后的基本原则是如果用户当前正尝试连接的节点与返回消息的节点不是集群中的同一个节点,那么用户将被重定向。

此原则需要获得用户的JID实现重定向。

一、可用的实现

此Tigase的实现跟其他实现一样,是可扩展的,支持不同的、可插拨的重定向策略,实现了SeeOtherHostIfc接口.

当前有三种可用的策略:

1)SeeOtherHost策略

此策略是最基本的实现,它会返回init.properties配置文件中的单个主机名或当前的主机名。

2)SeeOtherHostHashed策略

这是Tigase默认使用的策略,它对用户的JID值的进行哈希计算,根据哈希值来把终端连接重定向到SeeOtherHostIfc的集群环境中的节点。

所有有效的节点是根据默认的集群组成和所有连接到集群并工作的节点共同决定,也可以把所有的节点配置到init.properties中。

3)SeeOtherHostDB策略

此策略是SeeOtherHost策略的扩展实现,它根据Tigase数据库的user_id和node_id配对的形式来决定终端用户应该被重定向到哪一个节点。

二、配置选项

下面是实际的负载均衡重定向最基本的相关配置:

–cm—see-other—host=

它可能的值包括:

tigase.server。

xmppclient.SeeOtherHost

tigase。

server.xmppclient.SeeOtherHostHashed

tigase.server.xmppclient.SeeOtherHostDB

none-disablesredirection

说明:

前三行为三种重定向策略,最后一种是不使用重定向策略.

其余的所有选项都是以连接管理器per—connection—manager为基础进行配置的,因此这些选项都需要加上相应的连接管理器ID作为前缀,比如c2s、bosh、ws的配置,下面以c2s配置为例:

c2s/cm—see-other-host/default-host=host1;host2;host3

用分号来间隔重定向的主机节点名

c2s/cm—see—other—host/active=OPEN;LOGIN

用分号来间隔终端用户可以被重定向的阶段

当前可使用的值包括:

OPEN它表示打开XMPPstream期间可以进行重定向

LOGIN它表示在授权认证用户会话期间可以进行重定向

Tigase默认的重定向阶段是OPEN阶段。

SeeOtherHostDB策略附加的选项包括:

c2s/cm-see—other-host/db—url

JDBC连接的URI,用于查询重定向信息;如果没有配置,那么会使用–user—db—uri的值。

c2s/cm-see-other-host/get—host—query

SQL查询语句,它应该能返回重定向的主机名。

c2s/cm—see-other-host/get-all—data-query

SQL辅助器查询语句,它能够返回来自数据库所有的重定向数据。

c2s/cm-see-other-host/get-all—query-timeout

设置执行查询的超时时间。

注:

tigase默认的负载均衡实现比较简单,负载的方式是客服端向任意服务端请求,服务端内部通过一些负载方式,分配一台服务端,然后把分配这台服务器连接信息返回给客户端,客户端在连接分配的这台服务端,使得客户端多了个一个步骤.建议使用LVS负载均衡器实现负载功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2