【问题标题】:How to send data between Node js and javascript in an html file如何在 html 文件中的 Node js 和 javascript 之间发送数据
【发布时间】:2018-05-31 18:38:50
【问题描述】:

我正在使用眼动仪,我想创建一个实时显示这些数据的网站。我有眼动仪通知 Node js 服务器,它提供的数据非常一致,但是当我使用 socket.io 发送数据时,它的缓冲速度非常慢。我想要一种方法在我的 index.html 中的脚本中从 Node js 服务器实时或尽可能接近地接收这些数据。有什么建议么?

【问题讨论】:

  • WebSocket 是发送数据最快的方式,可能你做错了什么,尝试显示一些你所做的代码。
  • Socket 通信绝对是最快的。但是,有时它会将套接字通信推迟到轮询,这需要更长的时间,尤其是在处理大量数据的情况下。向我们展示您的一些 socket.io 代码以及您收到的任何控制台消息。
  • 我发现 'ws' 在良好的文档中很稳定npmjs.com/package/ws 当我使用它从节点服务器流式传输二进制类型的缓冲区以在浏览器端实时呈现时,它工作得很好......但是无关,我确实必须使用网络工作者来管理所有浏览器端的 websocket 流量,因此浏览器网络音频 api 事件循环永远不会被此类网络流量中断......要记住的事情......发布你的浏览器端及其匹配的服务器端 websocket 代码...分钟完整的独立示例,以便我们可以提供帮助

标签: javascript node.js socket.io


【解决方案1】:

我在 socket.io-streams 中找到了我的解决方案。这是我所做的:

在 app.js 中:

var ss = require('socket.io-stream');
var Readable = require('stream').Readable;
const io = require('socket.io')(http);

io.of('/data').on('connection', socket => {
   var eyeTracker = ...
   var listener = {
       ...
       onGazeData:function(gazeData){ //trigger for recieving a gaze location
         var s = new Readable()
         s._read = function() {};
         var stream = ss.createStream();
         toSend = gazeData.x + "," + gazeData.y
         s.push(toSend);
         s.pipe(stream);
         ss(socket).emit('gaze',stream);
       }
    }
    eyeTracker.setListener(listener);
});

app.get('/', function (req, res) {
   res.sendFile(path.join(__dirname, 'index.html'));
}

在 index.js(链接到 index.html)中我放了:

var ss = require('socket.io-stream');
$(function(){
   var socket = io.connect('http://localhost:3000/data'); //or where ever you are running
   socket.on('connect', function() {
      ss(socket).on('gaze', function(stream) {
         stream.on('data', function(data) {
            //do what you want with data
         })
       })
    });
    //other parts of script outside of socket
});

此解决方案能够跟上正在流式传输的数据。

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2021-05-01
    • 2013-06-14
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多