|
3 | 3 |
|
4 | 4 | use React\EventLoop\Factory; |
5 | 5 | use React\Http\Server as HttpServer; |
6 | | -use React\Socket\Server; |
| 6 | +use React\Socket\Server as SocketServer; |
| 7 | +use React\Socket\Connector; |
7 | 8 | use Blockchain\Node; |
8 | 9 | use Blockchain\Miner; |
9 | 10 | use Blockchain\Blockchain; |
10 | 11 | use Blockchain\Block; |
11 | 12 | use Blockchain\Miner\HashDifficulty; |
| 13 | +use Blockchain\WebServer; |
12 | 14 |
|
13 | 15 | require __DIR__.'/../vendor/autoload.php'; |
14 | 16 |
|
15 | | -$loop = Factory::create(); |
| 17 | +$params = getopt('', ['http-port::', 'p2p-port::']); |
| 18 | +$httpPort = $params['http-port'] ?? 8080; |
| 19 | +$p2pPort = $params['p2p-port'] ?? 3030; |
16 | 20 |
|
17 | | -$node = new Node(new Miner(new Blockchain(Block::genesis()), new HashDifficulty\ZeroPrefix())); |
18 | | -$webServer = new HttpServer(new Node\WebServer($node)); |
| 21 | +$loop = Factory::create(); |
19 | 22 |
|
20 | | -$params = getopt('', ['port::']); |
21 | | -$port = $params['port'] ?? 8080; |
| 23 | +$p2pServer = new Node\P2pServer(new Connector($loop)); |
| 24 | +$node = new Node( |
| 25 | + new Miner(new Blockchain(Block::genesis()), new HashDifficulty\ZeroPrefix()), |
| 26 | + $p2pServer |
| 27 | +); |
22 | 28 |
|
23 | | -$socket = new Server($port, $loop); |
24 | | -$webServer->listen($socket); |
| 29 | +(new SocketServer($p2pPort, $loop))->on('connection', $p2pServer); |
| 30 | +(new HttpServer(new WebServer($node)))->listen(new SocketServer($httpPort, $loop)); |
25 | 31 |
|
26 | | -echo sprintf("Server running at http://127.0.0.1:%s\n", $port); |
| 32 | +echo sprintf("Web server running at http://127.0.0.1:%s\n", $httpPort); |
| 33 | +echo sprintf("P2p server running at tcp://127.0.0.1:%s\n", $p2pPort); |
27 | 34 |
|
28 | 35 | $loop->run(); |
0 commit comments