2010-07-14 84 views
3

我已經把自己束縛在STOMP和0MQ中,但是簡而言之,我想通過PHP MOM或許多PHP MOM的交互來促進客戶端到客戶端在瀏覽器中的通信。我正在考慮使用WebSocket在html5瀏覽器客戶端和MOM端點之間提供持久的雙工連接(如果可用),然後使用這些端點來促進任意數量的瀏覽器客戶端之間的通信,這可能與1-1,1-許多,許多1關係。0MQ是協議,一個圖層還是兩者?我可以將它與STOMP一起使用嗎?

MOM終端可能會與其他服務器通信,或者爲了不同的目的與其他服務器進行通信,我相信0MQ可能是在這些服務器之間快速交換信息的可行方式。作爲客戶端之間的消息傳遞協議,STOMP看起來不錯(雖然我意識到協議定義中存在一些問題)....

....所以這裏是我的困惑點。要使用STOMP,MOM必須是一個STOMP代理,如果它是一個STOMP代理,那麼作爲0MQ是一個'無代理'的消息傳遞層,是不是會破壞使用兩者的目的?爲了澄清,我正在考慮針對MOM - MOM通信的0MQ以及針對客戶端 - 客戶端通信的STOMP。

除非當然,有一種方法可以重新調整0MQ來促進客戶端與客戶端的通信?我想我真正的困惑是0MQ-它是一個輕量級消息傳遞層,而不是一個協議,或兩者兼而有之?如果只有一層,我不能使用0MQ傳輸STOMP消息嗎?

如果任何人都能爲我發光0MQ,我會非常感激 - 謝謝!

回答

2

0MQ提供了一個無服務器套接字的API,通過它你可以覆蓋你自己的協議。 0MQ傳輸簡單的未解釋的二進制數據(儘管一些語言綁定添加了對特定序列化的支持,如Python酸洗或JSON)。

與普通套接字不同,0MQ套接字可以是多對一,一對多的。 0MQ也具有消息傳遞模式的概念 - 例如,您可以定義REQ/REP套接字,它強制每個請求都必須緊跟一個響應 - 您不允許連續發送兩個請求。有各種其他模式適合不同的情況。

見0MQ GuideAPI

因此,要回答你的一些問題 - 0MQ基本上是一個消息層,並在原則上,你應該能夠在0MQ插座發送STOMP只是作爲一個正常的網絡套接字。但是,我不確定Web客戶端可以直接使用0MQ - 它需要語言綁定,並且ZMQ本機庫需要可用。我認爲這爲網絡客戶端的使用做了規定。

相關問題