我在服务器端存储了一个图像。每当客户端连接到服务器时,它都会通过套接字发送图像。收到的图像我能够在画布上显示它,但是我无法将接收到的图像保存在本地磁盘中。我试图使用fs.writeFile(),但也许我没有发送正确的参数。任何导致此问题的方法都会有所帮助。谢谢。 [我希望将其实现为基本的通信客户端 - 服务器]。
为了优化它,我能以更快的方式实现相同的操作吗?任何有效的代码也会有所帮助。
//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);
var end = new Date().getTime();
document.getElementById("demo").innerHTML = end;
fs.writeFile('logo.jpeg', img.src, 'data:image/jpeg;base64,', function(err){
if (err) throw err
console.log('File saved.')
})
}
});
答案 0 :(得分:-1)
我对此非常陌生,但我认为对于#34;沟通&#34;在两个实体之间,两者都必须能够在某个时刻充当服务器,因此两端都需要PHP脚本。
客户端通常发送请求由服务器处理的请求,因此如果您需要p2p通信,客户端必须下载php脚本以使其充当服务器....
同样,我是新手,所以我可能(非常)错了