workerman实现 grpc服务端及http2服务端

小阳光

基于workerman 实现http2服务端

https://github.com/xioayangguang/workerman-http2

已支持h2, h2c

添加host

127.0.0.1 xxxxxxxx.cn

修改证书路径

'ssl' => [
     'local_cert' => './draw.xxx.cn_bundle.pem', //修改成自己的路径
     'local_pk' => './draw.xxx.cn.key', // 修改成自己的路径
]

运行

composer install
php http2_server_h2 start  (常见浏览器只支持此模式)

浏览器打开地址查看效果

https://xxxx.cn/
截图

基于workerman 实现Grpc服务端

已支持grpc的四种模式
简单模式
服务端流模式
客户端流模式
双向流模式

编译 workerman的protoc插件

下载
https://github.com/xioayangguang/workerman_grpc_plugin
编译后 放入到系统可执行目录里面

安装依赖

composer install

编写自己的proto 并生成php服务端代码

protoc --php_out=. --workerman_out=. hello.proto

实现grpc服务端逻辑

具体可参考 proto/GreeterServiceExample.php

运行服务端

php grpc.php start

运行客户端

运行golang编写的grpc客户端

cd example-go-client && go run main.go
or
cd example-go-client && ./main.exe

截图

1960 4 6
4个评论

虽没看懂,感觉很高端

  • 小阳光 2023-05-05

    目前workerman本身支持http1.1文本协议,这个是在workerman上实现http2,http2是二进制协议,需要知道http2的各种帧及格式,还有各种帧的协作,流的意义等,相对较为复杂。grpc又是基于http2。要看懂,需要懂http2协议的二进制协议。要看懂grpc如何基于http2运作起来的,其中包括简单模式,客户端流模式,客户端流模式,双向流模式等东西, 如果想要让workerman或者php支持grpc服务端就可以研究一下。我只是实现了底层协议,并不能让它可以拿来就用,使用者还需要实现grpc路由分发等功能。

  • 2023-05-05

    感谢回复!抽空研究一下

walkor

666

sinowealth

牛逼,那这个后面可以用作PHP grpc的服务端了?感觉webman未来可以做微服务框架了哎?

  • 暂无评论
mpv945

我也想把grpc服务集成到webman中去,目前gRPC官网只有生成php客户端代码。网上说好像php-fpm原因,php的grpc实现不了?

  • 小阳光 2023-10-25

    这就是php实现的grpc服务端,目前我没有维护,你可以自己拿去研究。只要实现了http2,grpc协议很简单。

小阳光

1467
积分
0
获赞数
0
粉丝数
2020-04-02 加入
🔝