2016-08-17 58 views
1

我有一個圖像存儲在服務器端。無論何時客戶端連接到服務器,它都會通過套接字發送圖像。收到的圖像我能夠在畫布上顯示它,但是我無法將收到的圖像保存在本地磁盤中。我試圖使用fs.writeFile(),但也許我沒有發送正確的參數。導致此問題的任何情況都將有所幫助。謝謝。 [我想實現這個作爲基本的通信客戶端服務器]。無法保存在客戶端的JPEG圖像

要優化它,有什麼辦法可以以更快的方式實現相同的操作?任何工作代碼也會有幫助。

//server side js code 
 

 
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(6969, function(){ 
 
    console.log('listening on port 6969'); 
 
}); 
 

 

 
// trying to serve the image file from the server 
 
io.on('connection', function(socket){ 
 
    start = new Date().getTime(); 
 
    console.log(start); 
 
    console.log('a user connected'); 
 
    fs.readFile(__dirname + '/image.jpg', function(err, buf){ 
 
    socket.emit('image', { image: true, buffer: buf.toString('base64') }); 
 
    console.log('image file is transmitted'); 
 
    }); 
 
});
<script> 
 
var socket = io("http://139.25.100.101:6969"); 
 
var ctx = document.getElementById('canvas_win').getContext('2d'); 
 
var fs = require('fs'); 
 
socket.on("image", function(info) { 
 
    if (info.image) { 
 
    var img = new Image(); 
 
    img.src = 'data:image/jpeg;base64,' + info.buffer; 
 
    ctx.drawImage(img, 0, 0); 
 
\t var end = new Date().getTime(); 
 
\t document.getElementById("demo").innerHTML = end; 
 
\t fs.writeFile('logo.jpeg', img.src, 'data:image/jpeg;base64,', function(err){ 
 
     if (err) throw err 
 
     console.log('File saved.') 
 
\t 
 
}) 
 
} 
 
});

+0

nodejs和瀏覽器javascript有不同的apis。 (例如:'document','fs',...) –

回答

-1

我很新的這一點,但我認爲,對於2個實體之間的「溝通」,既要能在某些時候充當服務器,因此thenecessity一個PHP腳本兩端。

客戶端通常發送到由服務器處理的請求,所以如果你需要一個P2P通信,客戶端必須下載一個PHP腳本,使其能夠充當服務器....

,我再次一個新手,所以我可能是(非常)錯誤