【问题标题】:How can I send request from server to other clients and receive response from clients and then send data in node.js?如何从服务器向其他客户端发送请求并接收客户端的响应,然后在 node.js 中发送数据?
【发布时间】:2021-01-07 05:24:26
【问题描述】:

我正在构建一个区块链应用程序,我从服务器向客户端发送请求,服务器想要在链上添加一个块,如果所有客户端都批准该请求,服务器将向链上添加一个块.这是我的代码。

Server.js

const express = require('express');
const app = express();
const http = require('http').createServer();
var port = 3000;
const io = require('socket.io')(http);
const io2 = require('socket.io-client');
const io3 = require('socket.io-client');
//const io4 = require('socket.io')(http);
const fs = require('fs');
var block = require('./blockchain');
var count = 0;
var bcdata = {};


let socket2 = io2.connect("http://localhost:3001");

socket2.on('client12other', (data)=>{
    console.log("Data Received from Client: ", data);
    if(data == "Client-1: Approved"){
        count++;
    }
});

let socket3 = io3.connect("http://localhost:3002");

socket3.on('client22other', (data)=>{
    console.log("Data Received from Client: ", data);
    if(data == "Client-2: Approved"){
        count++;
    }

});

io.on("connection", (socket) => {
    socket.emit("server2client","Need Approval");
    console.log("Receiver Connected ");
});

http.listen(port, () => {

    console.log("Server is up at port: "+port);
    setTimeout(a, 2000);
    //a();

});

//console.log("End of File");


function a(){
    console.log("Inside function a");
    let data = blockAdd();
    if(data != null){

        io.on("connection", (socket) => {
            socket.emit("sendblock",bcdata);
            console.log("BC Sent! ");
        });

    }
    else{
        console.log("Data is null");
    }

}






function blockAdd(){

    if(count == 0){
block.blockAdd({FileName: "Anyfile", Author:"Sowvik",TimeStamp:"1/1/2021", Size:"500MB", Hash:"dsjfoiJKLJSLKJhflkzxnl85290sjdJFDSKL",Extension: ".mp3"});
block.blockAdd({FileName: "Test File", Author:"Mushfiq",TimeStamp:"1/5/2023", Size:"750MB", Hash:"dfgdgdfgdfsdvdfgnee534",Extension: ".ransomware"})
block.blockAdd({FileName: "Movie", Author:"Test",TimeStamp:"1/1/2021", Size:"500MB", Hash:"dfhhKHWDQIowieyoy(*Y*(y0394L", Extension: ".txt"})
//block.printBlockchain();
bcdata = block.blockChainData();
return bcdata;

    }
    else
    return null;
}



//var bcdata = block.blockChainData();

Client1.js

const io = require('socket.io-client');
const io3 = require('socket.io-client');
var request;

let socket = io.connect("http://localhost:3000");
console.log("Client Running....\n");

socket.once("server2client", (data)=>{
    console.log("Data Received from Server: ",data);
    request = data;
})
let socket2 = io3.connect("http://localhost:3002");

socket2.once('client22other', (data)=>{
    console.log("Data Received from Client: ", data);
})

const http = require('http').createServer();
const io2 = require('socket.io')(http);
const express = require('express');
const app = express();

io2.on('connection', (socket2)=>{
    if(request == "Need Approval")
    socket2.emit('client12other', "Client-1: Approved");

    //console.log("Client-1 Approved Request to Add chain");
})

socket.on("sendblock", (obj)=>{
    console.log("BlockChain Received from Server: ");
    console.log( obj);
})

http.listen(3001,()=>{
    console.log("Client 1 is listening at 3001!");
})

Client2.js

const express = require('express');
const app = express();
//const http = require('http').createServer();
var requ;

const cio = require('socket.io-client');
let socket = cio.connect('http://localhost:3000');
socket.on('server2client',(data)=>{
    console.log("Received from server: ", data);
    requ = data;
})
const cio2 = require('socket.io-client');
let socket2 = cio2.connect('http://localhost:3001');
socket2.on('client12other',(data)=>{
    console.log("Received from client: ", data);
})
const http = require('http').createServer();
const sio = require('socket.io')(http);
const port = 3002;

sio.on('connection', (socket2)=>{
    if(requ == "Need Approval")
    socket2.emit('client22other', "Client-2: Approved");
})
socket.on("sendblock", (obj)=>{
    console.log("BlockChain Received from Server: ");
    console.log( obj);
})
http.listen(port, ()=>{
    console.log("Client 2 is up! ");
})

这些是我的解决方案的代码。

【问题讨论】:

  • 您的具体问题是什么?

标签: javascript node.js sockets socket.io request


【解决方案1】:

您是否为每个连接到您的套接字的用户创建一个新变量?

喜欢 (io2 , io3)?

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2021-12-04
    • 2018-11-14
    • 1970-01-01
    • 2021-08-04
    • 2017-10-03
    相关资源
    最近更新 更多