http://professionalxmpp.com
Professional XMPP Programming with JavaScript and jQuery
然後下載source code
https://github.com/metajack/profxmpp
然後建立一個副本於我的bitbucket
https://bitbucket.org/my account/professional-xmpp_code
然後local電腦也有一個git離線庫
@mac pro 15, ~/professional-xmpp_code
然後用sourcetree這個工具負責兩邊同步
第一章主要是講 XMPP的協定
XMPP全文是extensible messaging and presence protocol
大多數社群網站如Facebook, MySpace, Twitter均使用此協定
每個用戶都有聯繫人組成的花名冊,當聯繫人上線或是離線均會自動發出通知
XMPP定義了通信實體間所使用的資料格式,XMPP使用XML格式,在XMPP中XML組成一對data stream,每個stream前後均有開始與結束字,例如
<message to='somebody1@xmppdomain2'
from='somebody2@xmppdomain2'
type='chat'>
<body>some messages</body>
</message>
XMPP也支援TLS (transport layer security) ,SASL (simple authentication and security layers)
第一章主要是講 XMPP的協定
XMPP全文是extensible messaging and presence protocol
大多數社群網站如Facebook, MySpace, Twitter均使用此協定
每個用戶都有聯繫人組成的花名冊,當聯繫人上線或是離線均會自動發出通知
XMPP定義了通信實體間所使用的資料格式,XMPP使用XML格式,在XMPP中XML組成一對data stream,每個stream前後均有開始與結束字,例如
<message to='somebody1@xmppdomain2'
from='somebody2@xmppdomain2'
type='chat'>
<body>some messages</body>
</message>
XMPP也支援TLS (transport layer security) ,SASL (simple authentication and security layers)
實現身份驗證機制
Ejabberd, Openfire, Tigase是三種能夠於Windows, Mac OSX, Linux上使用的開源伺服器
XMPP的尋址
XMPP每個實體都有一個或多個JID,看起來就像電子郵件格式,JID有兩種格式,包含資源或不包含
XMPP的節
三種基本節分別為<presence>, <message>, <iq>
XMPP stream由兩份XML組成,通信每一方向均有一個XML,以<stream:stream>包住要傳送的資料,例如
<stream:stream>
<iq type='get'>
<query xmlns='jabber:iq:roster'/>
</iq>
<presence/>
<message to='somebody1@xmppdomain2'
from='somebody2@xmppdomain2'
type='chat'>
<body>some messages</body>
</message>
<stream:stream>
<presence type='unavailable'/>
<stream:stream>
iq節中用來請求花名冊,presence用來表示目前上線,message用來發出聊天請求,另一個presence用來表示目前無法訪問
在XMPP中,出席訂閱是單向性的,如果某甲訂閱某乙的出席訂閱,可以看到某乙的上線情形,不表示同時某乙可以看到某甲的的上線情形,某乙必須自行訂閱
另外,訂閱有關的presence type有 subscribe, unsubscribe, subscribed, unsubscribed
請求使用 subscribe, 接受使用 subscribed
另外有一種定向出席,可直接發給某沒有訂閱出席的用戶,用於多人聊天很有用
message節中可附加thread用來標誌線索
多人聊天的識別字是groupchat
iq表示info/query,有兩種請求 (get, set) 和兩種響應 (result, error)
stream的建立
<?xml version='1.0'?>
<stream:stream xmlns='jabber:client'>
xmlns:stream='http://server domain/streams'
version='1.0'
to='...'>
伺服器的回應
<?xml version='1.0'?>
<stream:stream xmlns='jabber:client'>
xmlns:stream='http://server domain/streams'
version='1.0'
from='...'
id='...'
>
Ejabberd, Openfire, Tigase是三種能夠於Windows, Mac OSX, Linux上使用的開源伺服器
XMPP的尋址
XMPP每個實體都有一個或多個JID,看起來就像電子郵件格式,JID有兩種格式,包含資源或不包含
XMPP的節
三種基本節分別為<presence>, <message>, <iq>
XMPP stream由兩份XML組成,通信每一方向均有一個XML,以<stream:stream>包住要傳送的資料,例如
<stream:stream>
<iq type='get'>
<query xmlns='jabber:iq:roster'/>
</iq>
<presence/>
<message to='somebody1@xmppdomain2'
from='somebody2@xmppdomain2'
type='chat'>
<body>some messages</body>
</message>
<stream:stream>
<presence type='unavailable'/>
<stream:stream>
iq節中用來請求花名冊,presence用來表示目前上線,message用來發出聊天請求,另一個presence用來表示目前無法訪問
在XMPP中,出席訂閱是單向性的,如果某甲訂閱某乙的出席訂閱,可以看到某乙的上線情形,不表示同時某乙可以看到某甲的的上線情形,某乙必須自行訂閱
另外,訂閱有關的presence type有 subscribe, unsubscribe, subscribed, unsubscribed
請求使用 subscribe, 接受使用 subscribed
另外有一種定向出席,可直接發給某沒有訂閱出席的用戶,用於多人聊天很有用
message節中可附加thread用來標誌線索
多人聊天的識別字是groupchat
iq表示info/query,有兩種請求 (get, set) 和兩種響應 (result, error)
stream的建立
<?xml version='1.0'?>
<stream:stream xmlns='jabber:client'>
xmlns:stream='http://server domain/streams'
version='1.0'
to='...'>
伺服器的回應
<?xml version='1.0'?>
<stream:stream xmlns='jabber:client'>
xmlns:stream='http://server domain/streams'
version='1.0'
from='...'
id='...'
>
沒有留言:
張貼留言