我已經實現了一個chrome擴展,它允許使用在遠程服務器上運行的旁遮普服務器上的BOSH連接使用XMPP聊天。它使用JavaScript Strophe庫實現。我遇到的問題是,當我有同一用戶的多個會話(例如同一臺計算機上有兩個不同的瀏覽器)時,我無法接收並從第一個聊天窗口發送的消息登錄到第二個聊天窗口。需要有一些機制允許這一點。我能以某種方式接收我發送給其他用戶的消息嗎?這個問題也可以在2臺或更多不同的機器上覆制,所以這也需要解決。同一用戶問題的XMPP多個會話
謝謝。
我已經實現了一個chrome擴展,它允許使用在遠程服務器上運行的旁遮普服務器上的BOSH連接使用XMPP聊天。它使用JavaScript Strophe庫實現。我遇到的問題是,當我有同一用戶的多個會話(例如同一臺計算機上有兩個不同的瀏覽器)時,我無法接收並從第一個聊天窗口發送的消息登錄到第二個聊天窗口。需要有一些機制允許這一點。我能以某種方式接收我發送給其他用戶的消息嗎?這個問題也可以在2臺或更多不同的機器上覆制,所以這也需要解決。同一用戶問題的XMPP多個會話
謝謝。
您需要了解JID的工作方式,優先級以及如何發送消息。
甲JID的形式爲:[email protected]/resource
登錄的用戶的的JID的必須是唯一的。通常,當您使用Web客戶端時,您可以爲每個會話分配一個隨機資源,以免發生衝突。
現在,當用戶發送消息時,<message>
節的to
屬性指定了消息的接收者。如果資源是收件人的一部分,那麼只有該JID將收到該郵件。如果收件人是裸JID(用戶@域),則優先發揮作用(見here):
您可以設置優先級(一個整數[-128,127]),當你把你的存在(見rfc全規格)例如:
<presence>
<status>Learning XMPP</status>
<priority>1</priority>
</presence>
如果你想擁有整個對話,包括您發送從您的客戶端顯示在另一個會話,然後Carbons是您正在尋找的功能。我的implemented this in a plugin爲Prosody。
所需的客戶端部分不應太難編寫,here's it done in the Verse library。
長話短說!
用途:
mXmppConnection.login (USERNAME, PASSWORD, StationName/NickName);
而不是:
mXmppConnection.login (USERNAME, PASSWORD);
稱爲資源的最後一個參數,代表你的站,你從登錄。
這樣你就可以用相同的用戶名登錄,但仍然可以從2個設備登錄。
2號不準確。它可以按照定義向所有人交付,或根據其他實施特定標準交付給一個收件人。 [第11.1節入境節](http://xmpp.org/rfcs/rfc3921.html#rules)。儘管如此,還是一個很好的答案 – Robin 2012-02-27 18:02:57
@Robin啊哈,這大部分都是內存不足,當然你是對的。 Ammending。 – ggozad 2012-02-27 18:17:14