сокет io, узел js, простой пример отправки изображения / файлов с сервера на клиент
Есть ли простые и понятные примеры того, как подавать изображение? от сервера к клиенту? через буферизацию или просто прямой вызов для загрузки? (цель состоит в том, чтобы эффективно получить файлы изображений в режиме, близком к реальному времени, для сортировки представления потока изображений, близкого к живому), и добавить тег html-изображения или просто в тело html-страницы.
неполный пример кода: (в основном, полученный из официального образца или просто коды из stackoverflow)
index.js
// basic variables
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs'); // required for file serving
http.listen(3000, function(){
console.log('listening on *:3000');
});
// location to index.html
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
// only to test chat sample code from sample
io.on('connection', function(socket){
console.log('a user connected');
// broadcast a message
socket.broadcast.emit('chat message', 'System Broadcast Message: a user has been connected');
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
// trying to serve the image file from the server
io.on('connection', function(socket){
fs.readFile(__dirname + '/images/image.jpg', function(err, buf){
// it's possible to embed binary data
// within arbitrarily-complex objects
socket.emit('image', { image: true, buffer: buf });
console.log('image file is initialized');
});
});
(html-страница на стороне клиента) index.html (мы перейдем к преследованию только с той частью, которая обслуживает изображение) Что мы можем сделать на стороне клиента, чтобы получить файл и предоставить изображение на html-странице?
socket.on("image", function(image, buffer) {
if(image)
{
console.log(" image: from client side");
// code to handle buffer like drawing with canvas** <--- is canvas drawing/library a requirement? is there an alternative? another quick and dirty solution?
console.log(image);
// what can we do here to serve the image onto an img tag?
}
});
Спасибо за чтение
Обновить:после фрагментов кода снизу также необходимо изменить переменную «buffer» на image.buffer, чтобы изображение отображалось правильно
в основном изменить линию от
img.src = 'data:image/jpeg;base64,' + buffer;
к
img.src = 'data:image/jpeg;base64,' + image.buffer;