通过 node.js 实现的 websocket 接收和更新图像



我不是程序员...我可以在node.js中创建一个websocket应用程序,它可以将图像发送到borwser,但是我的图像很少,有时会更改。前任。图片1.jpg图像2.jpg图片3.jpg图像4.jpg我需要在浏览器中不断更新此图像。

我的应用程序现在只能处理一个图像,无需更新。完整的项目是听到的:https://github.com/akoscomp/imgstream我使用以下代码发布图像:

io.sockets.on('connection', function(socket){
fs.readFile(__dirname + '/image.jpg', function(err, buf){
    //it's impossible to ebed binary data
    socket.emit('image', { image: true, buffer: buf.toString('base64') });
    console.log('image file is initialized: ' + __dirname + '/image.jpg');
});});

我可以检查文件更新,但我无法在浏览器上自动更新:

   var watch = require('node-watch');
watch('image.jpg', function(evt, filename) {
  console.log(filename, ' changed.');
});

请帮助我在 borwser 中自动更新图像。之后,我可能可以将代码应用于许多图像。

您可以使用

以下代码在更改图像后发送图像。

io.sockets.on('connection', function(socket) {
  connections.push(socket);
  console.log('Connected: %s sockets connected', connections.length);
  // Diconnect
  socket.on('disconnect', function(data) {
    connections.splice(connections.indexOf(socket), 1);
    console.log('Disconnected %s sockets connected', connections.length);
  });
  fs.readFile(__dirname + '/image.jpg', function(err, buf) {
    //it's impossible to ebed binary data
    socket.emit('image', { image: true, buffer: buf.toString('base64') });
    console.log('image file is initialized: ' + __dirname + '/image.jpg');
  });
});

var watch = require('node-watch');
watch('image.jpg', function(evt, filename) {
  if (evt === 'update') {
    fs.readFile(__dirname + '/image.jpg', function(err, buf) {
      for (var i = 0; i < connections.length; i++) {
        //it's impossible to ebed binary data
        connections[i].emit('image', { image: true, buffer: buf.toString('base64') });
        console.log('image file is initialized: ' + __dirname + '/image.jpg');
      }
    });
  }
});

您可以在 https://github.com/yanalavishnu/imgstream 查看完整的项目

最新更新