2015-02-11 113 views
0

我正在使用MongooseIM作爲我的XMPP服務器,並且此服務器通常使用TCP作爲傳輸。這臺服務器可以正常使用我的iOS客戶端。但是當我想在Web應用程序中創建相同的服務時,我發現它不適用於任何類型的JavaScript XMPP框架。XMPP服務器MongooseIM是否可以使用BOSH或WebSocket?

由於使用瀏覽器,我們不能使用TCP作爲傳輸。相反,替代品是WebSocket和BOSH。當我在MongooseIM中使用WebSocket時,它顯示hand shake failed。與BOSH,它顯示403 error。那麼MongooseIM真的可以和WebSocket或BOSH一起工作嗎?

而且,TCP作爲我的傳輸,連接URL是'example.org',爲什麼它會是'example.org/http-bind'與BOSH?爲什麼2運輸有區別?

回答

2

純XMPP TCP連接,BOSH和Websockets是完全不同的協議。 BOSH和Websockets都使用單獨的後綴(http-bind,ws-xmpp)來區分端點是否在同一端口上運行。它讓服務器有些猜測客戶端要使用哪種協議,並提供很好的分離。

您準確使用BOSH和Websockets連接的URL是什麼?在前一種情況下,它應該類似http://localhost:5280/http-bind,後者應該是ws://localhost:5280/ws-xmpp

您嘗試過哪些JS客戶端?

+0

我使用Strophe.js和MongooseIM。我知道還有一些支持BOSH和WebSocket的服務器,但我想知道MongooseIM是否支持它們。因爲我不想修改我的後端架構。 – 2015-02-11 23:31:20

+0

是的,MongooseIM不支持WebSockets和BOSH。我們(免責聲明:我在MongooseIM上工作)在使用Strophe.js和BOSH方面有經驗,所以絕對有可能並且不應該在客戶端庫或服務器上進行任何更改。我不知道是否與WebSocket傳輸是一樣的,但我沒有理由認爲它不起作用。 – erszcz 2015-02-12 09:07:10

+0

我們需要更多的信息菲尼亞斯。第一個是你用於這些連接的URL。如果你能分享你的Strophe.js配置,那將會更好。 – 2015-02-13 10:13:01

相關問題