【问题标题】:What is the difference between RSocket + TCP and RSocket + WebSocket?RSocket + TCP 和 RSocket + WebSocket 有什么区别?
【发布时间】:2021-04-28 09:45:57
【问题描述】:

我对 RSocket 完全陌生。

我阅读了常见问题解答和动机页面(并浏览了协议页面)并了解 RSocket 可以在 TCP、WebSocket 和 Aeron 之上使用。但我不明白将 RSocket 与这些传输一起使用之间有什么区别,因为所有交互模型都可以与每种传输一起使用。

我个人对使用 RSocket 通道来启用双向通信很感兴趣,但不知道应该使用哪种传输方式。 比如RSocket(通道)+TCPRSocket(通道)+WebSocket有什么区别?

我在任何地方都找不到答案,所以我希望这里有人可以帮助我。

Ty 提前。

【问题讨论】:

    标签: websocket rsocket aeron


    【解决方案1】:

    RSocket 让您可以使用单一的反应式网络编程模型跨平台(JS、iOS、Android、C++ 服务器)进行编程。干净地支持来自 RxJava(Observable、Flowable、Single、Maybe、Completable)等框架的常见反应式操作。

    底层传输是一个实现细节。但这是一个关键的实现细节,因为在 GCP 中托管的移动设备和服务器之间,WebSocket 可能是唯一可行的选择。在数据中心中,您可以根据自己的要求选择 Aeron 或 TCP。

    无论您选择什么,您都可以针对相同的更高级别的反应式网络操作模型进行编写。如果你知道你只需要说 Aeron 来进行单个服务器到服务器的操作,你可能不需要 RSocket,你可以直接针对 Aeron 进行编程。 RSocket 在它之上给你这个抽象。

    【讨论】:

    • 请回答!你到底是什么意思:“让你用单一的反应式编程模型跨平台编程”?你的意思是说 RSocket 提供了一个标准的 API,可以在不同的平台(浏览器、Java 服务器等)上使用,以便与其他平台进行通信? (例如从浏览器到java服务器)
    • 是的。基本上就是这样。对于您的问题,您打算如何使用它以及与哪些客户一起使用与最佳选择非常相关
    • 您说即使选择正确的传输方式很重要,但从开发人员的角度来看并不重要,因为无论使用哪种传输方式,RSocket 都提供相同的反应特性?也许这是一个愚蠢的问题,但你如何选择正确的交通工具?例如,我计划在 AWS 中拥有一个与浏览器进行双向通信的 RSocket java 服务器。那么您能否举例说明使用 WebSocket 或 TCP 的要求?
    • 使用 websocket。浏览器和云提供商都支持 websocket 。 Demo.rsocket.io 展示了这个案例
    • 出于某种原因,我完全忘记查看支持的浏览器...我认为您不能直接在浏览器中使用 Aeron 或 TCP。你知道这是不是真的吗?
    【解决方案2】:

    RSocket 为多种传输提供通用编程接口。您可以根据传输提供的服务质量选择传输。例如,如果您需要轻松穿越防火墙,请选择 WebSocket,如果您需要低延迟和高吞吐量传输,请选择 Aeron。一切都是相对的。 Aeron 可以穿越防火墙,但配置更专业,WebSocket 可以提供合理的性能,但与 Aeron 不在同一类别。

    许多其他因素也会发挥作用,因此您需要了解底层传输及其提供的质量,并将其与您的要求相匹配。

    【讨论】:

    • 所以选择与RSocket没有任何关系。你必须看看运输带来了什么? WebSocket = WS 我还是不太明白 RSocket + TCP 和 RSocket 和 WS 的区别。我认为 TCP 和 WS 之间的主要区别在于 WS 支持双向通信。但是 RSocket 也带来了这个特性,即使在使用 TCP 时也是如此。 WS 也使用 TCP,所以您会说使用带有 TCP 的 RSocket 比使用带有 WS 的 RSocket 更快(更好?),因为您跳过了一个额外的层。那么 RSocket + TCP 和 RSocket + WS 有什么区别呢?
    • 带有 TCP 或 Aeron 的 RSocket 更适合服务器到服务器的通信,而带有 WebSocket 的 RSocket 更适合服务器到浏览器的通信。
    • 您能否解释一下为什么会这样,或者指出我正确的方向?我对这些东西(网络协议?)了解不多,并且想了解它,但不知道从哪里开始。顺便说一句,你的答案!
    • 大多数浏览器都在防火墙后面,只允许用于启动 websocket 的 HTTP。
    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多