3

我已经束手无策,对 STOMP 和 0MQ 都是新手,但简而言之,我想通过 PHP MOM 或许多 PHP MOM 的交互来促进浏览器中的客户端到客户端通信。我正在考虑使用 WebSocket 在 html5 浏览器客户端和 MOM 端点之间提供持久的双工连接(如果可用),然后使用这些端点来促进任意数量的浏览器客户端之间的通信,这可能与 1-1、1- 相关很多,很多-1的关系。

MOM 端点可能出于不同目的与其他服务器或它们之间进行通信,我相信 0MQ 可能是在这些服务器之间快速交换信息的可行方式。作为客户端之间消息传递的协议,STOMP 看起来不错(尽管我知道协议定义存在一些问题)....

....所以这是我的困惑点。要使用 STOMP,MOM 必须是一个 STOMP 代理,如果它是一个 STOMP 代理,那么由于 0MQ 是一个“无代理”消息传递层,我不会违背使用两者的目的吗?

为了澄清,我正在考虑 0MQ 用于 MOM - MOM 通信,以及 STOMP 用于客户端 - 客户端通信。

当然,除非有一种方法可以重新利用 0MQ 来促进客户端到客户端的通信?我想我真正的困惑是 0MQ——它是一个轻量级的消息传递层,而不是一个协议,还是两者兼而有之?如果它只是一个层,我不能使用 0MQ 来传输 STOMP 消息吗?

如果有人能为我照亮 0MQ,我将不胜感激 - 谢谢!

4

1 回答 1

2

0MQ 提供了一个无服务器的类套接字 API,您可以在其上覆盖您自己的协议。0MQ 传输普通未解释的二进制数据(尽管一些语言绑定添加了对特定序列化的支持,如 python pickling 或 JSON)。

与普通套接字不同,0MQ 套接字可以是多对一、一对多的。

0MQ 也有消息模式的概念——例如,你可以定义 REQ/REP 套接字,它强制每个请求必须跟随一个响应的约束——你不能连续发送两个请求。还有各种其他模式以适应不同的情况。

请参阅 0MQ指南API

所以回答你的一些问题 - 0MQ 基本上是一个消息传递层,原则上你应该能够像普通网络套接字一样通过 0MQ 套接字发送 STOMP。但是,我不确定 Web 客户端是否可以直接使用 0MQ——它需要语言绑定,并且 ZMQ 本地库需要可用。我认为这排除了网络客户端的使用。

于 2011-05-21T21:53:49.903 回答