tigase开发指南.docx
- 文档编号:5047398
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:23
- 大小:164.90KB
tigase开发指南.docx
《tigase开发指南.docx》由会员分享,可在线阅读,更多相关《tigase开发指南.docx(23页珍藏版)》请在冰豆网上搜索。
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,bind,urn:
ietf:
params:
xml:
ns:
xmpp-session,jabber:
iq:
privacy,jabber:
iq:
version,
http:
//jabber.org/protocol/stats,
urn:
ietf:
params:
xml:
ns:
xmpp-jabber:
iq:
roster,
starttls,
vcard-temp,
PJScmavCHlKKH-Airaflw.
・占If“MH
►’刊jifr>LHtviapa
»-aJlloilV-ElUBfi■:
|L“心sdrrpGnsntrmdLJ曰
Pnmponir*m«Mvh>mppw^iq
k^3liQHia^ampcna-LraH^aTaBA
►Jlllgiiv.cflhr
►
■亦曰冶砂廿翰
・韵]也箱dD.|dbc
►常I中H.总也母
|
|/广巾皑旷忸少踊讪乂.
I/>恢.;frirt¥a叭]
UslWCLMLFJKST.■懈円的能心盛飢LbflCM{0J"|*■**•**");
}
}catdiCLxcentiorie){
pc.sttWrriftMX「al昶〉;
thrornewi®*ceptionC6^ssmxrdw'ifiwf.aniproblm.rte)^
nw.piJtitlldJt^fpasitory„FTOTtK'a_Kt!
fpAusJiftepositary„FJfflHMOtWl_MJ¥i45L>;
itq仇putit甩ibeposilory.ghR-WKZrpjitil);
iiw.put
.puHAut^flepasitofyaWliMLK'fT*jid.^etftnQirif^)j
tw.iput axxi尸畑■,-^nint±idiD^iia.逛■■會(■护 /-: I7.■>Ij "it號可bd*日为i«用^K^fflrvEtlfnI pc,wtyferiftrtCtrw);I Tigase数据库表 Tigase用户信息、权限信息、离线消息信息、在线离线状态信息都存储在数据库中,但有 些数据我们不需要让tigagse存储、更新,比如在线离线状态信息,如果每个用户登录、登 出都让tigase更新表的字段,并发高了,显然数据库承受不了。 为了避免资源浪费也需要避 登录状态上线更新 上线状态更新是在验证用户名和密码时更新,验证功能是需要我们自定义的,仅需修改 登录状态下线更新 http: //jabber.org/protocol/commands,jabber: iq: private, urn: xmpp: ping,amp,disco,domain-filter,zlib,message-carbons, vcard-xep-0292,urn: xmpp: time ■MT屮.*1NWHlVt *dl^BWMnWilll■ ►>.E^jkM.1WWf>fW« *廊・191.・《轡2*暫 b>JJii|Wi ►-lZM*.9CTrt ►h紀■«**#*■*■*« *J|EiQAMMT#IriAWT ►十r«HW5rr*trft« ■0呻十“十押 *,t|]aMiMnwJificpelm ■4tm>*■■'Jmpncorspwil *-j|MW ►还百iMsr昨■耳URfPWW 翳宙Jtjfj*MAIW ・■」]气£iaKOHMM“4r ■Jr*KT尹si ►辱剖ZlsUomTiW •电畫”皿七新口1%■口mnw-RM翊 ►0Dti'MikHirdcr^rM. frQ|SUldCMhMfrMSdl*1 匕AWr«K>jmj■-crHtandvP*D»t> }<1*I ifCI^.iil^gubleCUvtl.fimpt)}{ Iflg.logfLevel.fWF^fc"MirtM! 0ofuse^seL^iorjs: {B}*ssesstcrrsfi^odeldl ・Siz*O>3 pw4 L! Clofl-iSLogflfibKLwiI-;JWtVJ)4 如■nSErinSfciildtrCiafl); tigase权限验证 for(JWPftt! »«rcrCamtrt: iErescor: 虫tsior,getActivcRrsMircesO)Irb”eppend「冷re*-"J.opperdfrEi_-on-ge-tlte&aijrcciQ).; ) I吗MO0(LevlHJTNEH"NuMb即1OfCWftfidtlOfflEIt[刖靶Ftheuur*柑]位}Jr«»ObjMtQ{珂理l聞.gffUCtVMlKfSCWCEilZilO-uscrJidl^s&.tDStrinQO}J; } }//Bridlcfe-l^a ]"endofif(Miiion.<0itA£iivtfis4Mr } }urtchCMHJkrttiCHr^zedEi££9t1.anej{ IM.IrafIrm>InMFfK'rlrwMlmartajthnrupd;聲代耳La: JH1'.4、: 云果登陆流程时需要验证权限,权限验证需要分匿名用户和企业客服两种,匿名用户默认验 证都可以通过,企业客服需要验证是否在用户中心登陆成功。 企业客服登陆 1.登陆用户中心,登陆成功后,用户中心会保存cookieid至缓存中 2.带着用户名、cookieid同tigase服务端建立连接 3.从缓存中获取验证信息 4.如果认证通过和tigase连接上 tigase的验证是需要我们自定义开发的,只需要在 tigase权限验证模块修改即可 llMHl HlIniBTftMTr**"JWCMWflWry! MUPU^^rwmM卜*^・心口「■1W'种加**■ 會11F *I■'・£.E对FMk即ihgHiv-iinrKlUdarni ►团bbKka protzectwivflii”hnndlcWrifyP^spHonCollbodcCWtriFyPtiwwriKolltarlfcpc>tbrwslOCaccptianf£tHngpcA聲詔I-pr-^e! -P 电叩{ ObjKt>pap■计Hg'ihHcixStrinfl,0b>Kt*O: »? 』Pli・i5Fmj•戎KJLJ*暉 ■}rwhCMb*? ***^IFmi PJ1£ci«niS*±HlfaKHniiraliwhbm ►圍Uw ►曲1Kv料商■存 k£ldtol.lfr4l>4¥ ►JiTgetilflBUSffMWa# ►||Ti$m*4EW<0卄C *xliA-vufiMnt.gi|;l*imd ►7」詁qpie.二arrpGnerxnKkdLi曰 P4|thaiU! c-ampcinirtfrmdJnmipk夕1iQiiia.=ani3cnHr<.rn=craHH ►J(ila»».EDnr J|1iipii»4gnrdd ►出llg■阳4b •*心・・-=血命审|i ・事晦9治堪卩廿巾) ►曲TlW0'b.|dtiC ►常lA・bt>l4・ 1) mt®.ipuK*utrfifs»sitory.rWTtKDL.KEr,AufchRcpasitor^.rm™DtWl.ACWSAiL); mogpu慎加bepMiAwy.L&EfiLJILJtEmjti); iiw.pu慎勵IFAefK血iAory,內 iKfci.puMloryajid.$etDcnai.n(^);. 心t^y.SFffKfli; 4txtt尸tio・加包户 //ttt可Utm%•耳片OiffiAflf.-est^nin.対姑卄诃dttzO; Ug.lwCLew&LFJWSJ.沖纤i曲驱SrtHWlL尿dd{0J-.") }StchCtX£«UtlCN1i)( pc.setwriftrttral冗〉; theorne«ilOExce(rt: io^(pRasMxdvwifiwt'.onh1ctol*ii.Je) tigase在线坐席获取 匿名用户登陆需要根据客户名分配一个在线坐席会话。 tigaseroster插件是用于返回好友列表,可以 修改用来分配坐席列表。 JZjiiliiwumtii二BTLsrapwlivi,1hlHiHqovIbartBriHaH徂StaMsnfeiavar—iaLjJLMMFPPkvcBHHariftEjHraIj.Jabbart^nDrtrjmaH ■",'■pBW-rt-jT'»i号j■匸nr"*rn・$~lfc话Ji£■*? WP■juvrc^afvmtwi.■Oruwv**■cl^f,■ria^^ihfxfifiMcT? 1.: //QicckrD4tfrws-itrihsaha 騎尸ins讣町阳一辟晌■啊匸辄皿耳拓业瑁加.dQW闭3¥砂如七? 《七.呼屯JjTT>jStrLnfli%fbedHa艸■s"x //ifclientprwi^ndnashandth? wfvwcolculotedhash-a^th? wio f/returntheS4直ctisresult //Nato■伸dIfi*aM..^aAit*r14tN*c.1iwi11. if(incnringHasiil! ・milX ■rustEr_irtil.getBvddicsHpaJX.M^sicnJ; tf[(st^ridHaih一null\Ilft>ar«MKH.icEnptyf)M upgkntiHdrsh(ite^slDrbw 匕处玮畫我门B疋坐常列购回 if<(f讥叶孑|・n^\)tt(丙匕・》r*曲a-g)){ElfBHPt口册丫■rwELenfeHtC_query"); J If£it^valtC阪嵋r衫■洋)>( results.offcrCpgc-et.okResultC(5-fcn.rxi)「i/LL.0)}; 5-tDnKmjsh—rmteT-uurtii_f)eHkKHie-s>teh(swiionJ; 插件的调用是在SessionManager中调用: ItgjEi-jEDni prh«MtmjijmlhfHnURadutt门Kki*狎咲1W**eiOur,C( //fina-lELfflfcrt書1由.FimlpLjeuc-d1Defeatsrtsults)(for(n^PPiTKeiiorlfcproc_ii評iym酣心■-仇( WPPPfKWWflfCFWWWf“peC/j.Ajfeiwr: 2-atinn-rfli-l■fiO^irkindlinfpor lif(r? *nli: Wrhor^articH..{ 汀{Jcigi,i4ati|^(iLrvc 2o^.Ic^(Leve1ufTMWrw.eiwrlfc: 您\({l}"寸^J1■-Ki>eqM«t: "*■(ZhCd*;{3}",FW03}Kt0{M)rcfleta«K>UH5IflfHeiiWC).pnjcesscir.iXJi.P»rte! Broinrttion}); i *rw酣slqnwods即fWHSOElDFliffTIVW*Et*2応・? 血他幡如心 fl]入飪: 辆中.事怪堆塾矽显 ■fCpt一mull)I眄■^>1wjmiihirwtfi^wl>, iffp"□dd[tm(F_: : <,cA.i£y,porkrtp『nrrHirtiwij){pHtat.^TDCEisrxKjesMsTBLdf))p m //pniK: Ht-detMjg()ueue-(); ifCJctf.t&Lim^leCLevel.rjWD)( 客户端获取好友列表: variq=$iq({ type: 'get', id: 'getmyroster' }).c('query',{xmlns: Strophe.NS.ROSTER})•tree(); connection.send(iq); tigase消息转发流程 用户在发消息给客服时,如果客服不在线,需要分配给机器人客服,机器人客服是以tigase客户端 方式使用的,并且为了负载均衡会有多个机器人客服,所以还需要分配。 分配这块功能需要修改 tigasesessionmanage组件处理消息模块的一段代码。 Tigase所有的消息都会经sessionmanager 进行处理。 ISM packet-t 3*計; ►it徒理则OftEoc ►g^BMHanOvan^oc ^jeye^acket? -results込ne*Arr^Oecvue^PacketXZ);boQlean玳®■ffll&e; 4EStJlfCXinficcDDnClaibM- HV'祈tBlvrifhPvdtrl> 彳XDU«uiQiDMU *toq ! ■SE5-9I.1V fiCrwUHtfiurabl* ©4dlPh<|hA ◎iuh_repckEJt€iry uMh-TImrM uUnTlBMMi 口口04鈕石 dcirjrKti£iiiCT«ckCDfnrnandHandli IIJtlH*nS"riP«ectolPickrtHardHr 1801 血牡丘观堆加的牡庄,用户分配容呪 Pnckpt.Trcn$fornttarttll(r.pn? t■防*: 〉, [dr上科.procfsseday<"filterfQHdr^d"); jQp.loflCLtwl.FIWJT,-Racketpr«proc«UM)7*卜*»padwt.ta&trin^acmO^: if>0){ fui-(Pockrt: 」: 代剳八輻){ [t^,loQCL*wl.FINEST.'Prwrecessr«uLt;匕p,to6tEr4Srcur«0〉; } addOutPockAtsCpdCicft,corm,r«fuLtf3^ publi匚claisPncketTrarsfonridandler{转證 publicstctitvoid procesAjPocketpocks tig白昶的消息内部会转换为packet对象分配容服机器人就是改变消息的接受者这块是我自定义实现的例子 ifCpccket.getTypeO—StcnzoType.chat){ //.tigssiffi务HB擅收消崽 StringfrcmCtxnpMdme-packet.getPacketFrorr<).^etBdr&JIDO.g览tLocalpcrt();StringtcConipNamr=pcicket.getRocketToQ.getBareJIDQ.getLocalpartQ;if(fromComphkrne.equalsftxjsh'^X 这里可皿官罡交分配相羌功能 JIDdisIDsJlD.jitfZnatanceC'zhangsan^LiniJx-irrtiSk");packet.setStaaT0 System.out-printlnCpccketdispacterk/'+pocket.toStringO); }catch(TigaseStringprepEx匚pptiori电){ //TODOAuto-generatedcatchblock e.prlntStacklracef); } /Ztigowf麗剪划发送消崽 ifffromCotnpNcme.equolsf,1sessLcnh,5型toCorrpNanie.equaIsC"session"1)){ Packet类中没有setStanzaTo方法需要修改加入 030■/ publicJIDgetStanzaToO{ 858returnstanzaTo; 859} 稅1Ppublicvoidset5tanzaTo(JIDjid){ 862Ithis-stanzaTc^jid; 863 864- tigase离线消息存储 tigase在用户不在线时,会把消息存储在数据库中,默认是关系型数据库,这块我们是需要存储到 hbase等nosql数据库中的,这块功能需要修改下源码tigase已经写好的离线消息插件 Urr41ishrij^v^yVitiP-r'IA1rS>^r,、叩]#hI>rufyrflIii,ttA;i,»t*<'f rt#^rhodt&StiiPtpiSCk-frt"fedfl.\1^4Ltcryj raiiE raw irTiorn-a Vrarr;Jt 血Vb*-M£C4mp9WrtJLgnV^lp^MVFiL****■»«*»¥甜^W«M4*VJ|N« ififcom! —nvTlUppckrt,^ctStcnfaToC)11-r>ul"LK! canri,i»UsrrrTd(pQcric*tBgetSTanjaTof}.^etBarEjTDO^J 此4E为保存參Jfitl犀j可口崔义 LtoryIfcrr^d怦pu**^TN! i^ft«pciIrtpl(rt^a.fturn>; AuthorifgitianwveAe&^ltJ5»eFcsketF^rtrfFlirwlJserCpocket,“网、卜他维1result■null; switchCwwAes^lt)( comSfWKL-MAWLUt^-, rtlult*»¥cflEiult.ifGTflesi brarir; H ifCntwllt怙null)( queue } ]©KMCUs电冲k>L卜owndRj临eplLS€)£ if(』《«,HUggspbltfIt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tigase 开发 指南