2009-12-04 101 views

回答

18

對於服務器可以實現的WebSockets,我們還沒有XMPP的標準,在客戶端得到充分解決之前,這是必需的。

第一步是完成WebSocket標準化。看起來這可能發生在IETF HyBi工作組,該工作組在撰寫本文時尚未得到IESG的批准。幾星期前在廣島IETF會議上有一隻HyBi Birds-a-Feather(BoF)(參見meeting materials),效果非常好。

在WebSockets有一個穩定的引用並且似乎正在穩定下來之後,XSF將創建一個XEP,它將XMPP綁定到WebSockets,推測是每個WebSocket框架都有一個節。

編輯:Jack Moffitt已經寫了一個IETF Internet-Draft第一次通過協議可以使用。 警告。這仍然可能發生巨大變化。只有在你願意在以後徹底撕掉時才實施它。 警告

3

有一本書即將覆蓋這個話題...

Professional XMPP with JavaScript and jQuery alt text http://ecx.images-amazon.com/images/I/51B7VAHw8OL._SL500_AA240_.jpg

但我假設你不想等待的書。所以看手錶the Jack Moffitt's presentation from JSConf。我今天早上看了。 (Jack Moffitt是上面鏈接的書的作者。)

涉及的庫(JavaScript和C實現)是Strophe

這是一個非常富有成效的探索領域,但非常原始。我們很快就會看到。 WebSockets帶有HTML5,是嗎?

+0

確實,WebSockets是HTML5的一部分;谷歌瀏覽器已經實現了它們 – 2009-12-05 02:16:06

24

有多種解決方案(它們都不是完美的)

1.使用Kaazing。

他們已經支持它。它是開源的,但他們有某種dual license,所以更好地檢查你是否可以用於你的項目。

2.結合js.io和APE(阿賈克斯推進引擎)

APE是一種彗星框架,但他們最近開始支持WebSockets的。 在他們的網站(「APE as proxy」部分)中,他們說它可以運行包含xmpp.js的js.io庫,因此可以將它們結合起來使用。

3。使用的Caucho

這是一個類似APE基於Java的框架,它提供一站式彗星的解決方案,他們似乎支持XMPP和WebSockets的

4 。請Strophe團隊支持WebSocket。

Strophe在BOSH上執行XMPP(基於同步HTTP的雙向流),但也有a discussion about supporting WebSockets。我們需要提供更強有力的推理,說明他們爲什麼需要通過BOSH支持WebSocket。爲什麼他們需要通過BOSH支持WebSocket?如果你有很好的答案,請加入。

我剛試過xmpp,bosh,strophe echobot example,效果很好。您可能也想試試看它是否符合您的要求。

對於#2和#3,他們說他們都支持xmpp和websockets,但不知道他們是否一起工作。

什麼樣的應用程序,您正在考慮使用XMPP & WebSockets?

以下是有關替代方案的建議。

  • 如果你想存在,聊天,聊天室等效的功能,你可以讓Google Wave小工具或機器人,然後暴露於使用Wave Embed API外(死鏈接,保存歷史的目的)。 Wave實際上是建立在XMPP之上的。
  • 如果您只是在尋找非常低延遲的消息傳遞功能,那麼您可以使用。
  • 如果你正在尋找更簡單的消息流,你可以只pipe in/out unix file as I demonstrated here

我得到了最上面時,我寫this blog post的信息。 如果您不時查看評論部分,我會在找到其他解決方案後發佈更新。

+1

>你在考慮使用XMPP和WebSockets進行什麼樣的應用? 我並不一定有任何具體的想法;一般來說,基於WebSockets的XMPP將爲真實的基於事件的Web應用程序提供框架和協議,從而大大改善用戶體驗。: *基於Web的電子郵件 *基於Web的協作 *實時數據同步 *實時更新 *瀏覽器到瀏覽器通信 這兩種技術的結合,以及功能強大的客戶端JavaScript引擎,似乎開闢了許多可能與現代網絡應用程序。 – 2010-01-11 11:10:42

+1

Strophe現在支持websockets。我可以選擇使用websocket或BOSH進行連接。 – Robin 2015-01-26 14:59:10

0

我不知道你爲什麼專門針對WebSocket的解決方案要求,因爲XMPP服務器必須支持這個第一。

然而,有幾個可用的XMPP JavaScript庫(據我看到他們都使用BOSH法):

這些實施例是從其中列出了XMPP協議的開放源碼實現的XMPP Website服用。

+0

鏈接通常不被接受爲答案。以您自己的語言形式針對問題制定答案,並將該鏈接用作參考。編輯後提及我,所以我可以刪除我的downvote。 – markus 2011-11-30 16:38:21

+1

@markus:謝謝你的評論。我確定了答案。 – MKroehnert 2011-12-03 16:52:45

+0

問題是特別要求支持WebSockets而不是BOSH的JavaScript XMPP庫。 – 2012-08-15 02:56:36

0

我不確定瀏覽器端的JS可以單獨處理websocket協議,因爲它主要依賴於瀏覽器API。很少有瀏覽器支持websocket:Chrome,Safari5,也許Firefox4。有許多基於flash/as3的解決方法(然後你的js與flash代碼進行通信),主要限制是flash不支持安全連接(太糟糕了)。

BWT,你可以檢查this websocket implem他們提供開源的Java websocket客戶端lib,似乎處理xmpp的東西,如果你瀏覽倉庫,你可能會發現基本的as3 websocket實現。

3

JSJaC implements XMPP Over Websockets。據瞭解幾個後端的實現工作:

  • 節點XMPP協議 - 波什 支持RFC6455和0.6.1以來,沒有任何問題的作品,它也 透明地使用STARTTLS如果有必要
  • WXG - 支持RFC6455和工作 沒有問題,但無法連接到需要 STARTTLS(原始wxg有一些 問題,由Gordin修復)的服務器。
  • ejabberd-的WebSockets - 不 支持RFC6455因此它不工作,適應它支持 RFC6455應該是很容易對任何人知道二郎(一些工作 正在進行,也可以在GitHub上找到)
  • 的Openfire - 非官方插件是可用的,但它缺乏對RFC6455支持 因此它不工作
  • 阿帕奇Vysper - 不 不支持RFC6455因此不起作用
  • Tigase - 上的WebSocket 支持
  • 沒有已知的工作
  • MongooseIM - ejabberd 的分支,通過Websockets支持XMPP。