这真的是P2P?

我在这里使用socket.io-p2p尝试发送图像文件。 由于它是p2p,我认为该文件没有被上传到服务器,并且直接发送到连接的对等端。 我设法用我有的代码传输一个文件,但我很不确定这是否是一个真正的P2P传输,因为在我看来,该文件是上传到我的服务器,然后发送到另一个对端,而不是一个实际的P2P两个设备之间的连接。 无论是在标签之间还是在不同networking上的两个不同设备之间发送文件,我都会在DU Meter中上传和下载尖峰。 我知道信号部分是在我的服务器上完成的,但是如果这是真正的p2p,那应该是关于它的。 当然,我可能是错的,所以我要求评估。 你们有什么感想?

server.js

var app = require("express")(); var express = require("express"); var server = require("http").Server(app); var p2pserver = require("socket.io-p2p-server").Server; var io = require("socket.io")(server); var ss = require("socket.io-stream"); var path = require("path"); app.use(express.static(__dirname)); io.use(p2pserver); var peerNum = 0; io.on("connection", function(socket) { console.log("Peer " + peerNum + " connected"); io.emit("peer-num", peerNum); peerNum++; ss(socket).on("file", function(stream, data) { var filename = path.basename(data.name); var parts = []; stream.on("data", function(data) { parts.push(data); }); stream.on("end", function() { socket.broadcast.emit("file", parts); }); }); }); server.listen(80,'95.211.186.223', function () { console.log("Listening on 80") }); 

client.js

 // this file is meant to be browserified var P2P = require("socket.io-p2p"); var io = require("socket.io-client"); var ss = require("socket.io-stream"); var socket = io(); var opts = {autoUpgrade: true, peerOpts: {numClients: 10}}; var p2p = new P2P(socket, opts); var $ = require("jquery"); p2p.on("peer-num", function(num) { console.log("You are peer number " + num); $(".peerNum").html("You are connected to " + num + " peers."); }); p2p.on("file", function(stream) { //console.log(stream); var img = document.createElement("img"); img.src = (window.URL || window.webkitURL).createObjectURL(new Blob(stream)); document.getElementById("receivedImages").appendChild(img); }); $(function() { $("#file").change(function(e) { ss.forceBase64 = true; var file = e.target.files[0]; var stream = ss.createStream(); ss(socket).emit("file", stream, {size: file.size,name:file.name}); var blobStream = ss.createBlobReadStream(file); var size = 0; blobStream.on("data", function(chunk) { size += chunk.length; console.log(Math.floor(size / file.size * 100) + "%"); }); blobStream.pipe(stream); }); });