我正在尝试使用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