我正在使用眼动仪,我想创建一个实时显示这些数据的网站。我有眼动仪通知Node js服务器并且它提供的数据非常一致,但是当我使用socket.io将数据发送到它时,缓冲非常缓慢。我想要一种方法在我的index.html脚本中从Node js服务器实时或尽可能接收这些数据。有什么建议?
答案 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
});
此解决方案能够跟上流式传输的数据。