问题标签 [cramp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
753 浏览

ruby-on-rails - 抽筋和heroku

我一直在玩 Cramp,在应用程序中实时推送信息。它在本地运行良好,但是当我推到 heroku 时,我似乎遇到了端口问题。

我在 cramp 中设置了一个套接字,它继承自 websocket

而且我还有一个名为 home 的抽筋动作,它基本上只是为主页呈现一些 erb

在我的路由文件中,我设置了以下内容以及静态文件服务器

然后在客户端,javascript连接到

正如我在当地所说,这一切都有效。我们连接并开始接收来自服务器的通知。在 heroku 上,我们在 Cedar 堆栈上运行得很薄,并且配置文件看起来像

当我加载网站时,页面本身加载正常,但在尝试连接 websocket 时出现错误,提示

我猜这与 heroku 如何路由它的请求有关,但我知道你可以在 heroku 上运行 node.js websocket 服务器,所以我认为必须有一种方法可以让它工作。

提前感谢您的帮助。

干杯

斯图尔特

0 投票
1 回答
935 浏览

ruby - 如何在同一端口上提供 Cramp::Websocket 和普通 Rack 应用程序?

我正在尝试使用相同的端口来提供正常的 HTTP 流量以及通过Cramp(构建在 EventMachine 之上)的 HTML5 websocket,使用 Ruby 1.9.3 和Thin 1.3.1。这是一个最小的、独立的示例:

如果您想亲自尝试,请将此代码粘贴到名为config.ru并运行的文件中thin start。您需要 gems thincramphttp_router安装。

这个想法是 JavaScript 代码与 建立一个 WebSocket 连接ws://localhost:3000/socket,它会回显发送给它的消息,但这并不像预期的那样工作。事件open触发,发送消息时没有错误,但我们从未得到响应。

从服务器的角度来看,没有建立连接,因为Client connected没有打印消息。

使用thin start -D,我可以看到 HTTP 101 正在发生,并且正在交换一些二进制数据。

我究竟做错了什么?

更新:如果我将文件分成两部分,撕掉HttpRouter,并在不同的端口上运行两个thin实例,它仍然不起作用。所以问题出在套接字代码中,而不是在HttpRouterWebApp.

0 投票
1 回答
289 浏览

ruby - 请求通过 websocket 读取变得乱码

我正在尝试使用 Cramp 框架创建一个最小的 Websocket 实现。当 Cramp 成功呈现正常的 Web 内容时,我在尝试使用 HTML5 websockets 时遇到了麻烦。

我的动作类如下:

我的javascript代码如下:

服务器(瘦)检测何时发送数据但读取的文本是乱码。

数据的编码是 ASCII-8BIT(puts data.encoding打印“ASCII-8BIT”)。但是,通过 data.force_encoding('UTF-8') 强制 UTF 编码并不能解决问题。此外,在强制编码之后 -data.valid_encoding?返回 false ,因为它在强制之前为 true。

我已经在 ruby​​-1.8.7 和 ruby​​-1.9.3 中测试了该应用程序。两种情况下的输出相同。

另一个奇怪的事情是,在客户端永远不会触发 onmessage 事件。

此外,如果我从 HomeAction 中删除 keep_connection_alive 调用,则连接在接收到数据后立即终止,并且客户端仍然没有收到服务器发送的数据(“Hello world”)。

我已经在 Google chrome(最新版本)和 Mozilla firefox(最新版本)中测试了该应用程序。两者的问题完全相同。我的操作系统是 Ubuntu 12.04 LTS(Precise Pangolin)。

在这方面的任何帮助将不胜感激。

0 投票
1 回答
110 浏览

ruby - 调试涉及服务器发送事件的 Cramp 应用程序

我使用 Cramp ( http://cramp.in ) 在我的应用程序中实现服务器发送的事件。我使用 Thin 作为运行应用程序的服务器。在 Rails 中,我可以使用调试器 gem 来调试我的 rails 应用程序。调试器可以是也用于调试抽筋应用程序?

0 投票
1 回答
144 浏览

ruby-on-rails - 可以使用 Devise 在 Cramp 应用程序中进行身份验证吗?

我使用 Cramp.in( http://cramp.in ) 框架创建了一个应用程序。我现在需要为应用程序设置身份验证。在 Rails 中,我为此目的使用了 Device。设备可以在抽筋应用程序中使用还是我应该使用其他东西?

谢谢你

0 投票
2 回答
357 浏览

ruby - 是否有用于 websockets 的 ruby​​ 的稳定、生产就绪库?

我已经将 Socket.io 与 node.js 一起使用了一段时间,但我真的很想在 Ruby 中做到这一点。似乎有一些项目可用,但大多数都已经死了,即:

我能找到的唯一项目是em-websocket,但是它非常低级并且没有任何客户端库。

我是否错过了一些项目或图书馆,或者真的没有办法用 Ruby 做 WebSockets?

0 投票
1 回答
635 浏览

ruby - 通过 Cramp(Ruby) 和 SSE(HTML5) 实时更新

我准备了一个示例应用程序,以使用Cramp(Ruby)SSE(HTML5)从服务器实时获取更新。

通过访问 html 时出现以下错误http://localhost/sse_time.html

sse_time.html

应用程序/动作/time_action.rb

line 9在哪里var source = new EventSource('http://localhost:3000/time');

如果我http://localhost:3000/time在 chrome 中点击,它会在每 5 秒后显示时间,没有任何错误。

但是使用 PHP 代码可以很好地http://localhost:3000/timestream.phpin替换 URIsse_time.html

流.php

这里stream.phpsse_time.html居住在同一地点。

有人可以指导我解决这个问题吗?

0 投票
0 回答
124 浏览

ruby - "Hello World" with Cramp

I decided the much ignored but nonetheless amazing looking Cramp framework might be worth forking and picking up. I tried a basic hello world. However, it blows up on me:

The code is exactly like in the example on cramp.in :

And I run it via:

Any ideas about what to do or how to fix this?

0 投票
1 回答
151 浏览

ruby - 使用 em-synchrony 的 cramp 框架同步“渲染”正确方式

为了描述我的问题,我附上了简单的 Cramp http://cramp.in/类。我添加了一些修改,但它的主要工作方式类似于https://github.com/lifo/cramp-pub-sub-chat-demo/blob/master/app/actions/chat_action.rb

更多关于我尝试做的事情是在 handle_message 方法中。

我尝试以正确的顺序向客户端发送消息。首先向所有订阅者发布消息,然后仅为当前连接的客户端呈现一些内部信息。

对于上述代码客户端接收:

它不同步,可能是因为 em-hiredis 的响应不同。所以我尝试以这种方式同步它:

现在,客户端以正确的顺序处理消息。

我的问题是:

  • 当我评论 EM::Synchrony.next_tick 块时,消息顺序仍然不正确。在这个例子中 EM::Synchrony.next_tick 块有什么意义?
  • 这是使用 Cramp 或 EventMachine 处理内联同步的好方法吗?
  • 有没有更好、更清晰的方法来处理它?

谢谢!

0 投票
1 回答
1636 浏览

ruby-on-rails - 使用 Cramp 进行捆绑安装时出现奇怪的错误

这是一个Gemfile默认的 Rails 应用程序。

当我运行bundle install一切都很好。

现在做

它正在安装也没有任何麻烦。

最后包括

进入Gemfile. 从现在开始,我们有以下结果:

捆绑安装

捆绑更新

我没有指定 Cramp 版本,所以必须使用与我安装时相同的版本gem install cramp。但是为什么gem install工作没有任何问题并且 bundle install 发现了一些未解决的依赖关系?

我正在尝试在 Windows 7 + Ruby 2.0.0p451 + Rails 4.1.0 和具有相同 Ruby 和 Rails 版本的 Ubuntu 12.04 LTS 上执行所有这些操作。

我尝试了什么:我在默认情况下运行bundle install并添加,然后再次运行。结果你可以在上面看到几行。bundle updateGemfilegem 'cramp'bundle installbundle update