sm-plugin說明
參數 | 說明 | 參考 |
---|---|---|
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 | 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 | 管理virtual domains的特別命令 | 參考 |
jabber:iq:private | 私有數據存儲 |
|
urn:xmpp:ping | 心跳檢測 |
|
pep | 發佈訂閱插件 | 參考 |
domain-filter(basic-filter) | domain攔截器 | 參考 |
amp(basic-filter) | 高級消息處理 | 參考1,參考2 |
zlib(basic-filter) | zlib壓縮 |
|
message-carbons(basic-filter) | 將stanzas投遞到用戶指定的資源 |
|
disco(basic-filter) | 服務發現 |
|
標準錯誤代碼
代碼 | 說明 |
---|---|
302 |
重定向,儘管HTTP規定中包含八種不同代碼來表示重定向,Jabber只用了其中一個(用來代替所有的重定向錯誤) 。不過Jabber代碼302是爲以後的功能預留的,目前還沒有用到。 |
400 |
壞請求,Jabber代碼400用來通知Jabber客戶端,一個請求因爲其糟糕的語法不能被識別 。例如,當一個Jabber客戶端發送一個的訂閱請求給它自己活發送一條沒有包含“to”屬性的消息,Jabber代碼400就會產生。 |
401 |
未授權的,Jabber代碼401用來通知Jabber客戶端它們提供的是錯誤的認證信息,如,在登陸一個Jabber服務器時使用一個錯誤的密碼,或未知的用戶名 。 |
402 | 所需的費用,Jabber代碼402爲未來使用進行保留,目前還不用到。 |
403 | 禁止,Jabber代碼403被Jabber服務器用來通知Jabber客戶端該客戶端的請求可以識別,但服務器拒絕執行。目前只用在註冊過程中的密碼存儲失敗。 |
404 |
沒有找到,Jabber代碼404用來表明Jabber服務器找不到任何與JabberID匹配的內容,該JabberID是一個Jabber客戶端發送消息的目的地 。如,一個用戶打算向一個不存在的JabberID發送一條消息。如果接受者的Jabber服務器無法到達,將發送一個來自500級數的錯誤代碼。 |
405 |
不允許的,Jabber代碼405用在不允許操作被’from’地址標識的JabberID 。例如,它可能產生在,一個非管理員用戶試圖在服務器上發送一條管理員級別的消息,或者一個用戶試圖發送一臺Jabber服務器的時間或版本, 或者發送一個不同的JabberID的vCard。 |
406 |
不被接受的,Jabber代碼406用於服務器因爲某些理由不接受一個包。例如,這個可能發生在 ,一個Jabber客戶端試圖使用jabber:iq:private在服務器上存儲信息, 但當前的用於存儲的名字空間用”jabber:”開頭(在Jabber裏是一個被存的XML開頭)。 另一種可能產生406錯誤的情況是當一個Jabber客戶端試圖用一個空密碼註冊到一臺Jabber服務器上。 |
407 | 必須註冊,Jabber代碼407當前不被使用 |
408 |
註冊超時,當一個Jabber客戶端不能在服務器準備好的時間內發起一個請求時,Jabber服務器生成Jabber代碼408 。這個代碼當前只用於Jabber會話管理器使用的零度認證模式中。 |
409 | 衝突 |
500 |
服務器內部錯誤,當一臺Jabber服務器遇到一種預期外的條件,該條件阻止服務器處理來自Jabber客戶端的包,這是將用到Jabber代碼500 。現在,唯一會引發500錯誤代碼的時間是當一個Jabber客戶端試圖通過服務器認證,而該認證因爲某些原因沒有被處理(如無法保存密碼)。 |
501 |
不可執行,當服務器不支持Jabber客戶端請求的功能,使用Jabber代碼501 。例如,該代碼只當Jabber客戶端發送一個認證請求,而該認證請求不包含服務器配置中定義的任何一種認證方式時,服務器發送Jabber代碼501。 這個代碼還被用於,當一個Jabber客戶端試圖註冊一個不允許註冊的服務器。 |
502 |
遠程服務器錯誤,當因爲無法到達遠程服務器導致轉發一個包失敗時,使用Jabber代碼502 。該代碼發送的特殊例子包括一個遠程服務器的連接的失敗,無法獲取遠程服務器的主機名,以及遠程服務器錯誤導致的外部時間過期。 |
503 |
服務無法獲得,當一個Jabber客戶端請求一個服務,而Jabber服務器通常由於一些臨時原因無法提供該服務時,使用Jabber代碼503 。例如,一個Jabber客戶端試圖發送一條消息給另一個用戶,該用戶不在線,但它的服務器不提供離線存儲服務, 服務器將返回一個503錯誤代碼給發送消息的JabberID。當爲vcard-temp和jabber:iq:private名字空間設置信息時, 出現通過xdb進行數據存儲的寫入錯誤,也使用該代碼。 |
504 | 遠程服務器超時,Jabber代碼504用於下列情況:試圖連接一臺服務器發生超時,錯誤的服務器名。 |
510 | 連接失敗,Jabber代碼510目前還沒有使用。 |
擴展code(XMPPErrorCodeExtension枚舉),如果大家定義了,請加在此處。 ERROR_TH(4031, "cancel", "登陸過於頻繁或者流量過大")
MUC相關技術
- XEP-0004: 數據表單,用來交換數據。
CS和SM分離
- tigase中是可行的,但是目前架構沒有這樣做。這樣做會增加網絡開銷,目前此方案,不是很好,待嘗試。
使用到得XEP
- XEP-0184: Message Delivery Receipts,該擴展對server沒有任何要求,只要client端支持就行。
- XEP-0004:表單數據,用來交換數據,form類型[http://xmpp.org/registrar/formtypes.html]
- XEP-0198:server端的消息確認,tigase中的配置,它的存在的意義在http://op-co.de/blog/posts/XEP-0198中已經描述的非常詳細。
- XEP-199
- XEP-0114:Jabber組件協議
羣聊室的屬性
我們設計的羣已經不是標準的xmpp羣了,下面的屬性是對於smack或者標準的xmpp羣有意義的。
- 房間名稱|muc#roomconfig_roomname
- 描述|muc#roomconfig_roomdesc
- 允許佔有者更改主題|muc#roomconfig_changesubject
- 最大房間佔有者人數|muc#roomconfig_maxusers
- 其 Presence 是 Broadcast 的角色|muc#roomconfig_presencebroadcast
- 列出目錄中的房間|muc#roomconfig_publicroom
- 房間是持久的|muc#roomconfig_persistentroom
- 房間是適度的|muc#roomconfig_moderatedroom
- 房間僅對成員開放|muc#roomconfig_membersonly
- 允許佔有者邀請其他人|muc#roomconfig_allowinvites
- 需要密碼才能進入房間|muc#roomconfig_passwordprotectedroom
- 密碼|muc#roomconfig_roomsecret
- 能夠發現佔有者真實 JID 的角色|muc#roomconfig_whois
- 登錄房間對話|muc#roomconfig_enablelogging
- 僅允許註冊的暱稱登錄|x-muc#roomconfig_reservednick
- 允許使用者修改暱稱|x-muc#roomconfig_canchangenick
- 允許用戶註冊房間|x-muc#roomconfig_registration
- 房間管理員|muc#roomconfig_roomadmins
- 房間擁有者|muc#roomconfig_roomowners
線上服務器環境配置
tcp調優參考我之前的文章Linux TCP調優
Tigase默認jars包的版本信息(啓動的日誌文件中可以看到)
Loading component: amp :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.amp.AmpComponent}
Loading component: bosh :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.bosh.BoshConnectionManager} Loading component: c2s :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.xmppclient.ClientConnectionManager} Loading component: http :: componentInfo{Title=Tigase HTTP API component: Tigase HTTP API component, Version=1.1.0-b83/d51e1db6, Class=tigase.http.HttpMessageReceiver} Loading component: message-archive :: componentInfo{Title=Tigase Message Archiving Component, Version=1.1.0-b71/c4003eb3, Class=tigase.archive.MessageArchiveComponent} Loading component: monitor :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.monitor.MonitorComponent} Loading component: muc :: componentInfo{Title=Tigase MUC, Version=2.3.0-b389/879168a9, Class=tigase.muc.MUCComponent} Loading component: proxy :: componentInfo{Title=Tigase Socks5 Component, Version=1.1.0-b48/f5c8a08c, Class=tigase.socks5.Socks5ProxyComponent} Loading component: pubsub :: componentInfo{Title=Tigase PubSub, Version=3.1.0-b463/1df4d937, Class=tigase.pubsub.PubSubComponent} Loading component: s2s :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.xmppserver.S2SConnectionManager} Loading plugin: session-close=4:1265 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: session-open=4:1265 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: default-handler=4:1265 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:register=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:auth=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: urn:ietf:params:xml:ns:xmpp-sasl=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: urn:ietf:params:xml:ns:xmpp-bind=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: urn:ietf:params:xml:ns:xmpp-session=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:roster=2:2530 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:privacy=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:version=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: http://jabber.org/protocol/stats=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: starttls=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: vcard-temp=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: http://jabber.org/protocol/commands=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: jabber:iq:private=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: urn:xmpp:ping=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: presence=2:2530 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: disco=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: zlib=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: amp=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: message-carbons=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) Loading plugin: message-archive-xep-0136=1:5060 ... , version: 7.0.2-b3821/563fcf81 (2015-05-15/00:41:16) MA LOADED = [email protected] Loading component: sess-man :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.xmppsession.SessionManager} Loading component: ws2s :: componentInfo{Title=Tigase XMPP Server, Version=7.0.2-b3821/563fcf81 (2015-05-15/00:41:16), Class=tigase.server.websocket.WebSocketClientConnectionManager} |