2016-09-17 51 views
1

关于Rails 5 actioncable的介绍,我正在阅读一个很棒的post。它说:“Action Cable使用Rack套接字劫持API来控制来自应用程序服务器的连接。” “套接字劫持”是什么意思?什么是套接字劫持?

+0

如果我的答案有帮助,请将其标记为已接受:) –

+0

感谢您的回答,它确实有帮助! ..但是我不明白为什么有人对这个问题给出了否定的投票...... –

回答

3

套接字劫持实现了rack 1.5.0 - 一个模块化的Ruby web服务器接口。

Rack 1.5.0基本上为在rails中开发应用程序提供了一个简单且适应性强的界面。它通过以简单的方式包装HTTP请求及其响应来完成此操作。它还将用于Web服务器,Web框架和中间件的API整合到一个方法调用中。

因此,在rack 1.5.0套接字劫持用于允许rails应用程序超过客户端套接字并对其执行其他操作。这些操作包括:

  • 实施WebSockets
  • 流数据
  • 用户的浏览器和服务器之间的其他交互

的WebSockets允许用户将消息发送到服务器并接收事件驱动的响应,而无需轮询服务器的回复。

如图所示 - 正如您所看到的,打开WebSocket连接后,可以在用户和服务器之间发送和接收消息。

WebSockets


无论如何,您所指定的机架插槽劫持API中,它主要提供两种模式:

  • 全部劫持API

    • Ť他让应用程序完全控制套接字的内容。应用程序服务器不会通过套接字发送任何内容,并让应用程序处理它。
  • 偏劫持API

    • 这使得在插座上的应用控制后,应用服务器已经发送了头。这种模式基本上用于流式传输。

所以 - 最终,插座劫持基本上允许的Ruby/Rails应用程序重写/超车的客户机套接字和开展其不同的功能,或者你写的 - 采取连接的控制从应用程序服务器。