Skip to content

Commit e9476c5

Browse files
committed
Add route.
1 parent 246d522 commit e9476c5

File tree

1 file changed

+28
-17
lines changed

1 file changed

+28
-17
lines changed

examples/grpc/greeter_server.php

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
use Helloworld\HelloReply;
34
use Helloworld\HelloRequest;
45

@@ -12,26 +13,36 @@
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

Comments
 (0)