node index.js
var http = require("http");
var url = require('url');
const { exit } = require("process");
var events = require('events');
var Web3 = require('web3');
var web3 = new Web3(Web3.givenProvider || 'http://localhost:8545');
var helloworldContract = new web3.eth.Contract([{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]);
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// route 根路径
eventEmitter.on('/', function(method, response){
response.writeHead(200, {'Content-Type': 'text/plain'});
web3.eth.getAccounts().then(function(accounts){
response.end('Hello World' + accounts[0]);
});
});
// route 404
eventEmitter.on('/404', function(method, url, response){
response.writeHead(404, {'Content-Type': 'text/plain'});
response.end('404 Not Found\n');
});
eventEmitter.on('/deploy', function(method, response){
response.writeHead(200, {'Content-Type': 'text/plain'});
var helloworld = helloworldContract.deploy({
data: '0x608060405234801561001057600080fd5b5060036000806101000a81548160ff021916908360ff1602179055506101818061003b6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634f2be91f1461003b5780636d4ce63c14610045575b600080fd5b610043610063565b005b61004d610098565b60405161005a91906100ca565b60405180910390f35b600160008054906101000a900460ff1661007d9190610114565b6000806101000a81548160ff021916908360ff160217905550565b60008060009054906101000a900460ff16905090565b600060ff82169050919050565b6100c4816100ae565b82525050565b60006020820190506100df60008301846100bb565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061011f826100ae565b915061012a836100ae565b92508260ff038211156101405761013f6100e5565b5b82820190509291505056fea2646970667358221220efdd61a5c70c486236943fe5fca65acd2ad62cdd7cacccaaf1bb108edf553d8f64736f6c634300080a0033',
arguments: [
]
}).send({
from: '0x3385c0257782Ab3139351ba067066A43D9CBfe4B',
gas: '4700000'
}, function (e, transactionHash){
}).on('receipt', function(receipt){
response.write(receipt.blockNumber);
});
response.end('=====================END=====================\n');
});
// route
eventEmitter.on('/call', function(method, response){
response.writeHead(200, {'Content-Type': 'text/plain'});
var MyContract = new web3.eth.Contract([{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],
'0x0850e3C5bFdF8e21e2FFB576fd42dF91f0C1032d'
);
MyContract.methods.add().send({from: '0x3385c0257782Ab3139351ba067066A43D9CBfe4B'})
.then(function(){
MyContract.methods.get().call({from: '0x3385c0257782Ab3139351ba067066A43D9CBfe4B'})
.then(function(result){
console.log(result+'\n');
});
});
response.end('call\n');
});
// 启动服务
http.createServer(function (request, response) {
console.log(request.url);
// 分发
if (eventEmitter.listenerCount(request.url) > 0){
eventEmitter.emit(request.url, request.method, response);
}
else {
eventEmitter.emit('404', request.method, request.url, response);
}
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888/');