小编Jas*_*son的帖子

如何通过 WebSocket 将二进制数据从 Node.js 发送到网页?

我尝试过以几种不同的方式发送 Float32Array 和 ArrayBuffer 但我在客户端收到的缓冲区总是看起来是空的。我应该如何发送数据?我怎样才能访问它?

\n\n

这是我的最新尝试:

\n\n

服务器.js

\n\n
const WebSocket = require(\'ws\');\n\nconst wss = new WebSocket.Server({ port: 8000 });\n\nwss.on(\'connection\', function connection(ws) {\n\n    var arr1 = new Float32Array(4);\n    for (var i = 0; i < arr1.length; ++i)\n        arr1[i] = (i + 100) / 7;\n\n//    ws.send(arr1.buffer);\n\n\n    var arr2 = new ArrayBuffer(8);\n    for(var i = 0; i < 8; i++)\n        arr2[i] = i * 17;\n\n    ws.send(arr2);    \n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

客户端.html

\n\n
<!DOCTYPE html>\n<html>\n<head></head>\n<body>\n\n<script>\n\nvar gData = null;\n\nvar ws = new WebSocket("ws://192.168.0.7:8000");\nws.binaryType = \'arraybuffer\';\n\nws.onmessage …
Run Code Online (Sandbox Code Playgroud)

websocket node.js

5
推荐指数
1
解决办法
1万
查看次数

Rails如何知道这两个相同表达式之间的区别?

我使用的是4年前的Rails教程,我使用的是Rails 4.0.2.我制作了一个名为"Thing"的模型和一个名为"Things"的控制器."Thing"模型有一个名为"data"的属性.在我的create行动中,我有这条线:

@thing = Thing.new(params[:thing])
Run Code Online (Sandbox Code Playgroud)

这会导致此错误:

ActiveModel::ForbiddenAttributesError in ThingsController#create
Run Code Online (Sandbox Code Playgroud)

我找到了一个StackOverflow线程,说我需要require我需要的参数,并且工作得很好.

在我查看之前,我尝试将我的参数中的哈希直接放入Thing.new()方法中,但我没有收到错误.我从这一行开始:

puts params[:thing]
Run Code Online (Sandbox Code Playgroud)

在我的create操作中,在我的文本字段中键入"12345",点击提交并在控制台中获取:

{"data"=>"12345"}
Run Code Online (Sandbox Code Playgroud)

所以我在create动作中尝试了这个:

@thing = Thing.new({"data" => "12345"})
Run Code Online (Sandbox Code Playgroud)

我没有得到错误.我甚至通过这样做确认他们是完全相同的:

puts params[:thing] == {"data"=>"12345"}
Run Code Online (Sandbox Code Playgroud)

我在控制台上得到"真实".所以,

Thing.new(params[:thing])
Run Code Online (Sandbox Code Playgroud)

给了我错误,但是

Thing.new({"data"=>"12345"})
Run Code Online (Sandbox Code Playgroud)

才不是.

当Rails看起来相同时,Rails如何区分这两个论点?

ruby ruby-on-rails ruby-on-rails-4

3
推荐指数
1
解决办法
59
查看次数