html请求socket乱码,请求通过websocket读取得到乱码

时间:2025-03-28 09:04:26

我正在尝试使用Cramp框架创建一个最小的Websocket实现。 Cramp成功呈现正常的网页内容,当我尝试使用HTML5 websockets时遇到麻烦。请求通过websocket读取得到乱码

我的动作类如下:

Cramp:: = :thin

class HomeAction < Cramp::Action

= :websocket

keep_connection_alive

on_data :recv_data

def recv_data data

puts "got message"

puts "#{data}"

render "Hello world"

end

end

我的JavaScript代码如下:

$(function(){

window.socket = new WebSocket("ws://localhost:3000/game");

= function(evt){

console.log();

();

}

= function(evt) {

("end");

}

= function() {

("Now open!");

("Hello");

}

})

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

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

我在红宝石1.8.7以及红宝石1.9.3测试应用程式。两种情况下的输出都是相同的。

另一个奇怪的是,在客户端上的onmessage事件从来没有发射。另外,如果我从HomeAction中删除keep_connection_alive调用,则在数据收到后,连接立即终止,但客户机仍然没有收到服务器发送的数据(“Hello world”)。

我测试了谷歌浏览器(最新版本)和Mozilla Firefox(最新版本)的应用程序。这两个问题的问题依然完全相同。我的操作系统是Ubuntu 12.04 LTS(精确穿山甲)。

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

2012-08-14

lorefnon

+0

你可以发布一个十六进制的乱码响应版本吗? –

2012-08-14 12:57:42

+0

关于如何检索的建议?下面是一个方法,我发现:/4473681但是这个函数抛出错误:引发ArgumentError:畸形的UTF-8字符 –

2012-08-14 13:42:00

+0

是/a/8350209/311966任何帮助吗? –

2012-08-14 14:01:00