首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过websocket读取的请求变得混乱

通过websocket读取的请求变得混乱
EN

Stack Overflow用户
提问于 2012-08-14 20:12:37
回答 1查看 284关注 0票数 1

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

我的action类如下:

代码语言:javascript
复制
Cramp::Websocket.backend = :thin

class HomeAction < Cramp::Action
  self.transport = :websocket
  keep_connection_alive

  on_data :recv_data

  def recv_data data
    puts "got message"
    puts "#{data}"
    render "Hello world"
  end

end

我的javascript代码如下:

代码语言:javascript
复制
$(function(){


    window.socket = new WebSocket("ws://localhost:3000/game");
    socket.onmessage = function(evt){
        console.log(evt.data);
        socket.close();
    }
    socket.onclose = function(evt) {
        console.log("end");
    }
    socket.onopen = function() {
        console.log("Now open!");
        socket.send("Hello");
    }


})

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

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

我已经在ruby-1.8.7和ruby-1.9.3上测试了这个应用程序。这两个场景的输出是相同的。

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

另外,如果我从HomeAction中删除了keep_connection_alive调用,那么在接收到数据之后连接就会立即终止,而且客户端仍然不会接收到服务器发送的数据("Hello world")。

我已经在Google chrome (最新版本)和Mozilla firefox (最新版本)上测试了这款应用。问题在这两个方面都是完全相同的。我的操作系统是Ubuntu 12.04 LTS (精确穿山甲)。

在这方面的任何帮助都将受到强烈的感谢。

EN

回答 1

Stack Overflow用户

发布于 2012-10-21 21:40:41

我一直在遇到同样的事情,似乎是因为发行版的cramp 0.15.1 gem与你从github repo (https://github.com/lifo/cramp)获得的东西相比仍然被标记为0.15.1。

尝试这个对我有效的实验:

  1. 将GH存储库克隆到本地,并将
  2. 复制到bin/和lib/文件夹中,以及将cramp.gemspec文件从存储库复制到您的测试cramp项目
  3. 更改您的gemfile,而不仅仅是

宝石“抽筋”

包含代码的本地副本:

gemspec gem ' cramp ',:path File.dirname(__FILE__)

  • Erase your Gemfile.lock File.dirname(__FILE__)

  • Erase re-bundle,请看bundler现在报告它将使用cramp

  • 的本地副本再次尝试您的应用程序,在我的方案中,这现在完全按照预期工作。

看起来要么是github的修复程序还没有发布(但还没有在他们的gemspec中增加工作版本),要么是一些其他版本的混乱,但无论哪种方式,GH中的代码都可以工作,而"gem install cramp“不会给你websockets的工作代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11952041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档