//p2pServer.js
const WebSocket = require("ws")
const p2p_port = process.env.P2P_PORT || 6001
function initP2PServer(){ //p2p함수 초기화
const server = WebSocket.server({port:p2p_port})
server.on("connection",(ws)=>{ initConnection(ws);})
console.log("Listening webSocket port : " +p2p_port)
init(ws)
}
let sockets = []
function initConnection(ws){//연결되는애들만 푸시
sockets.push(ws)
}
function getSockets(){
return sockets;
}
function write(ws, message){
ws.send(JSON.stringify(message))
}
function broadcast(message){
sockets.forEach(
// function (socket){
// write(socket, message);
// }
(socket)=>{
write(socket, message);
}
)
}
function connectToPeers(newPeers){
newPeers.forEach(
(peer)=>{
const ws= new WebSocket(peer)
ws.on("open",()=>{initConnection(ws);})
ws.on("error", ()=>{console.log("connection Failed!")})
}
)
}
module.exports={
connectToPeers,
initP2PServer,
getSockets,
broadcast
}
//httpServer.js
const express = require("express")
const bodyParser = require("body-parser")
const { getVersion, getBlocks } = require("./chainedBlock.js")
const { getBlocks, addBlock, nextBlock } = require("./checkVaildBlock")
const {connectToPeers} = require("./p2pServer.js")
const http_port = process.env.HTTP_PORT || 3001
function initHttpServer(){
const app = express()
app.use(bodyParser.json())
//curl -H "Content-type:application/json"
// --data "{\"data\" : [\"ws://localhost:6002\", \"ws://localhost:6003\"]}"
app.post("/addPeers", (req,res)=>{
const data = req.body.data || []
connectToPeers(data);
res.send(data);
})
app.get("/blocks", (req,res)=>{
res.send(getBlocks())
})
app.post("/mineBlock", (req, res)=>{
const data = req.body.data || []
console.log(data)
const block = nextBlock(data)
addBlock(block)
res.send(block)
})
app.get("/version", (req,res) =>{
res.send(getVersion())
})
app.post("/stop", (req, res)=>{
res.send({"msg":"Stop Server!"})
process.exit()
})
app.listen(http_port, ()=>{
console.log("Listening Http Port : " + http_port)
})
}
initHttpServer();
curl -H "Content-type:application/json" --data "{\"data\" : [\"ws://localhost:6002\", \"ws://localhost:6003\"]}" http://localhost:3001/addPeers