使用 Websockets 在 Rails 应用程序中实现自动保存

Posted

技术标签:

【中文标题】使用 Websockets 在 Rails 应用程序中实现自动保存【英文标题】:Implementing autosave in a Rails app with Websockets 【发布时间】:2016-11-29 06:32:04 【问题描述】:

我有一个简单的文本编辑器,并希望实现自动保存,以便任何时候对文本进行更改,它都会立即发送到服务器。

有两种方法可以做到这一点:

    打开一个套接字连接并每秒通过套接字发送更改。 设置一个 750 毫秒的空闲键盘更改计时器,只要用户停止输入 750 毫秒,该计时器就会发送更改。

我知道当您不想轮询以检查服务器是否有新数据时,websockets 是合适的。但是当你想不断地向服务器发送数据时,它也适合吗?

Web 套接字上的 1 个请求/用户/秒通常比常规 http 连接上的 1 个请求/用户/秒的性能更高吗?

更新:

为了记录,我查看了 Google Docs,它似乎使用 post 请求而不是 websockets 进行自动保存:

它以大约 150 毫秒的键盘空闲计时器触发,并且只发送增量更改。

【问题讨论】:

【参考方案1】:

WebSocket 完全适合向服务器永久发送少量数据。

有两个主要优点:

您无需在每次发送数据时都建立连接,这样可以加快速度(尽管这对您的应用程序来说可能并不那么重要)。

您可以节省消息大小,因为 HTTP 标头比 WebSocket 消息的标头大得多。

(有关更多信息,请参阅this thorough *** answer。

【讨论】:

以上是关于使用 Websockets 在 Rails 应用程序中实现自动保存的主要内容,如果未能解决你的问题,请参考以下文章

在开发环境中使用 SSL/TLS 的 Rails 和 WebSockets

Rails Heroku Cloudflare SSL 和 websockets

如何通过 websockets 在 ruby​​ on rails 和 reactJS 之间发送数据

Websockets 与主要应用程序(nginx + 乘客 + faye)

带有 Rails(Puma)的 Websockets - WebSocket 握手期间出错:意外的响应代码:200

在带有 Puma 的 Rails 4 应用程序中使用 Web 套接字