Quiero enviar una imagen al frente usando socket.io-stream pero el navegador no ingresa el evento de flujo .on('data' ) pero ingresa el evento .on('end')
¿porqué es eso? y además, finalmente quiero agregar el código para poder hacer una transmisión en vivo del video, solo por ahora estoy tratando de transmitir el archivo de imagen
servidor
const express = require('express'); const { Server } = require("socket.io"); const http = require('http'); const fs = require('fs'); const app = express(); app.use(express.static("public")); const server = http.createServer(app); const io = new Server(server); const ss = require('socket.io-stream'); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); // входящее сообщение, что клиент присоединился // подхватываем сокет клиента io.on('connection', (socket) => { console.log('user connect'); setTimeout(() => { let ssStream = ss.createStream(); ss(socket).emit('image', ssStream, 'log') fs.createReadStream('/Users/artem/Work/dataset/frame000023.png').pipe(ssStream); }, 1000) }) server.listen(3000, () => { console.log('listening on *:3000'); });cliente
const socket = io(); ss(socket).on('image', function(stream,data) { console.log('received',data); var binaryString = ""; stream.on('data', function(data) { console.log('data') for(var i=0;i<data.length;i++) { binaryString+=String.fromCharCode(data[i]); } }); stream.on('end', function(data) { console.log('end') $("#img").attr("src","data:image/png;base64,"+window.btoa(binaryString)); binaryString = ""; }); });