2012-01-06 60 views
5

我想知道我對zeromq的想法是對的嗎?我正在考慮使用zeromq來編寫點對點聊天應用程序,但是隨着我對其進一步閱讀,zeromq似乎比使用(tcp套接字)更低級別。 zeromq是否適合編寫點對點聊天應用程序或者這個用例不適用?zeromq是對等視頻聊天的正確解決方案

回答

11

首先,我不同意你的說法,即zeromq是更多低於套接字。 AFAICT zeromq提供了一個類似於套接字API的API。但它也可以處理其他事情,例如使用相同的發送呼叫向多個客戶端發送消息。

其次,你的問題不是很清楚:你的意思是什麼:易寫(因爲你指的是低級),可靠,足夠高效等等?你可以使用你想要的任何東西,實現的複雜程度當然會有所不同。

此外,你應該使用UDP,而不是TCP在視頻聊天應用,因爲它是重要數據到達timeously比所有數據到達,但是這是一個完全不同的話題。如果你可以在udp中使用zeromq(你必須研究它),我沒有理由不能用它來進行視頻聊天。

您需要考慮的主要因素是您是否可以足夠快地在對等點之間發送數據以提供可接受的QoS:AFAIR對於會話服務,最大RTT約爲300毫秒。

以下link適用於VOIP,但也應該適用於視頻聊天reqirements:

大多數呼叫者發現往返延遲,當他們超過250毫秒,所以單向延遲預算通常是150毫秒。在ITU-T G.114建議中也規定了150毫秒作爲實現高質量語音的最大期望單向延遲。除了往返延遲之外,來電者開始感到不安,進行雙向對話並通常最終彼此交談。在500毫秒的往返延遲和以後,電話是不切實際的,你幾乎可以講一個笑話,並在你離開房間後讓另一個人笑。

+0

+1「數據到達」。開玩笑 – aitchnyu 2012-01-07 06:57:43

0

正如Ralf指出的那樣,ZeroMQ是非常高層次的,而不是低層次的。此外,通常會建議不要將ZeroMQ用於視頻,這是因爲UDP支持是新的並且還不普遍(see this answer)。通常,ZeroMQ是圍繞使用TCP套接字構建的,儘管PUB/SUB體系結構模仿UDP,但您不會獲得真正的UDP性能(這對於視頻來說至關重要),因爲TCP套接字上的錯誤檢查使得難以獲得延遲足夠低以獲得流暢的視頻流。