如何在html文件中的Node js和javascript之间发送数据

时间:2018-05-31 18:38:50

标签: javascript node.js socket.io

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

1 个答案:

答案 0 :(得分:0)

我在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
});

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