2012-01-06 61 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套接字上的错误检查使得难以获得延迟足够低以获得流畅的视频流。