33
44use React \EventLoop \Factory ;
55use React \Http \Server as HttpServer ;
6- use Psr \Http \Message \ServerRequestInterface ;
7- use Blockchain \Node \Response \JsonResponse ;
8- use React \Http \Response ;
96use React \Socket \Server ;
107use Blockchain \Node ;
118use Blockchain \Miner ;
@@ -18,27 +15,14 @@ require __DIR__.'/../vendor/autoload.php';
1815$ loop = Factory::create ();
1916
2017$ node = new Node (new Miner (new Blockchain (Block::genesis ()), new HashDifficulty \ZeroPrefix ()));
18+ $ webServer = new HttpServer (new Node \WebServer ($ node ));
2119
22- $ server = new HttpServer (function (ServerRequestInterface $ request ) use ($ node ) {
23- switch (trim ($ request ->getUri ()->getPath (), '/ ' )) {
24- case 'blocks ' :
25- return new JsonResponse ($ node ->blocks ());
26- case 'mine ' :
27- return new JsonResponse ($ node ->mineBlock ($ request ->getBody ()->getContents ()));
28- case 'peers ' :
29- return new JsonResponse ($ node ->peers ());
30- case 'peers/add ' :
31- $ data = json_decode ($ request ->getBody ()->getContents (), true );
32- $ node ->addPeer (new Node \Peer ($ data ['host ' ], $ data ['port ' ]));
33- return new Response (204 );
34- default :
35- return new Response (404 );
36- }
37- });
38-
39- $ socket = new Server (8080 , $ loop );
40- $ server ->listen ($ socket );
41-
42- echo "Server running at http://127.0.0.1:8080 \n" ;
20+ $ params = getopt ('' , ['port:: ' ]);
21+ $ port = $ params ['port ' ] ?? 8080 ;
22+
23+ $ socket = new Server ($ port , $ loop );
24+ $ webServer ->listen ($ socket );
25+
26+ echo sprintf ("Server running at http://127.0.0.1:%s \n" , $ port );
4327
4428$ loop ->run ();
0 commit comments