11<?php
2+
23use Helloworld \HelloReply ;
34use Helloworld \HelloRequest ;
45
1213 'open_http2_protocol ' => true
1314]);
1415$ http ->on ('workerStart ' , function (swoole_http_server $ server ) {
15- echo "nghttp -v http://127.0.0.1: { $ server -> port } \n" ;
16+ echo "php " . __DIR__ . " /greeter_client.php \n" ;
1617});
1718$ http ->on ('request ' , function (swoole_http_request $ request , swoole_http_response $ response ) use ($ http ) {
18- /**@var $request_message HelloRequest */
19- $ request_message = Grpc \Parser::deserializeMessage ([HelloRequest::class, null ], $ request ->rawcontent ());
20- if ($ request_message ) {
21- $ response_message = new HelloReply ();
22- $ response_message ->setMessage ('Hello ' . $ request_message ->getName ());
23- $ response ->header ('content-type ' , 'application/grpc ' );
24- $ response ->header ('trailer ' ,'grpc-status, grpc-message ' );
25- $ trailer = [
26- "grpc-status " => "0 " ,
27- "grpc-message " => ""
28- ];
29- foreach ($ trailer as $ trailer_name => $ trailer_value ) {
30- $ response ->trailer ($ trailer_name , $ trailer_value );
19+ $ path = $ request ->server ['request_uri ' ];
20+ $ route = [
21+ '/helloworld.Greeter/SayHello ' => function (...$ args ) {
22+ [$ server , $ request , $ response ] = $ args ;
23+ /**@var $request_message HelloRequest */
24+ $ request_message = Grpc \Parser::deserializeMessage ([HelloRequest::class, null ], $ request ->rawContent ());
25+ if ($ request_message ) {
26+ $ response_message = new HelloReply ();
27+ $ response_message ->setMessage ('Hello ' . $ request_message ->getName ());
28+ $ response ->header ('content-type ' , 'application/grpc ' );
29+ $ response ->header ('trailer ' , 'grpc-status, grpc-message ' );
30+ $ trailer = [
31+ "grpc-status " => "0 " ,
32+ "grpc-message " => ""
33+ ];
34+ foreach ($ trailer as $ trailer_name => $ trailer_value ) {
35+ $ response ->trailer ($ trailer_name , $ trailer_value );
36+ }
37+ $ response ->end (Grpc \Parser::serializeMessage ($ response_message ));
38+ return true ;
39+ }
40+ return false ;
3141 }
32- $ response ->end (Grpc \Parser::serializeMessage ($ response_message ));
33- } else {
34- $ response ->end ('failed ' );
42+ ];
43+ if (!(isset ($ route [$ path ]) && $ route [$ path ]($ http , $ request , $ response ))) {
44+ $ response ->status (400 );
45+ $ response ->end ('Bad Request ' );
3546 }
3647});
3748$ http ->start ();
0 commit comments