如何解决如何使用Node.js从客户端向后端流式传输单个float变量?
我正在浏览器中以大约15 fps的速度捕获数据,我希望将其流式传输到服务器。现在,这只是一个浮点var(distance
)。我正在使用socket.io-stream和socket.io在服务器和客户端之间进行通信。基本的io.emit()和io.on()事件可以正常工作,但是我一辈子都无法弄清楚如何流传输单个var -我什至尝试将单个float转换为{{1} }和Blob()
,但我看不到服务器上的数据更新。
这是我的前端代码:
ArrayBuffer
后端:
var distance = new Blob([0]) // init distance var to be streamed
var stream = ss.createStream();
ss(socket).emit('distanceStream',stream,{"DistanceStreamData":distance});
ss.createBlobReadStream(distance).pipe(stream);
...
function update(){
...
distance = new Blob([myDynamicallyChangingFloatVar])
...
}
我在服务器端的io.on('connection',function(socket) {
ss(socket).on('distanceStream',function(stream,data) {
console.log("got the stream!",data)
});
});
仅打印完整的Stream对象,而数据仅为console.log()
。
所有在线示例都使用"DistanceStreamData":{}
并流式传输文件数据或二进制数据,但是我只想流式传输在浏览器中计算出的单个float变量。还请让我知道是否有更简单的方法可以做到这一点(或者即使我用socket.io-stream吠叫了错误的树。我最初想到的是每秒调用io.emit()15次)在浏览器中,但是觉得这可能不是解决此问题的好方法...)
解决方法
我建议您只使用普通的socket.io消息。这将使发送变量变得容易。您既可以将其作为数据直接发送,也可以将其包装在一个对象中并使其成为该对象的属性,然后发送该对象。如果要发送多个数据,作为对象发送将使其更具扩展性。
socket.io-stream是socket.io之上的一层,也是webSocket传输之上的一层,因此该流不会比普通的socket.io消息更有效,并且实际上可能会产生该流额外的开销(效率较低)。另外,该流不提供用于发送结构化数据的内置机制。像任何流一样,您必须向流中添加数据格式,才能解释流中发送的数据。普通的socket.io消息已经为您做到了。
所以,我建议您从一条简单的socket.io消息开始。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。