Hyperf 框架做WebSocket 服务端及客户端的时候和grpc冲突与解决

公司原有的业务消息推送是靠前端 ajax 轮眉请求后端接口完成的。然后我新来的,让我改成 websocket 双向通信的来做消息推送。

简单的业务场景就是做一个聊天室,mq转发消息,在php bin/hyperf.php start 启动后,老是进程自动断掉:

一直找不到原因,后来看到官方文档 :https://hyperf.wiki/2.0/#/zh-cn/quick-start/install

说下面的这些扩展不兼容。

存在兼容性问题的扩展

由于 Hyperf 基于 Swoole 协程实现,而 Swoole 4 带来的协程功能是 PHP 前所未有的,所以与不少扩展都仍存在兼容性的问题。
以下扩展(包括但不限于)都会造成一定的兼容性问题,不能与之共用或共存:

  • xhprof
  • xdebug
  • blackfire
  • trace
  • uopz

我检查了一下我的扩展,没有这些,那会是啥情况啊,swoole 从4.6.7 到 4.6.0 全部安装了一遍,还是这个问题,连接刚一启动就断掉。

我再次检查一下安装的扩展。

注意到有个grpc.

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.

gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。于是果断禁掉!

接着重新打开hyperf服务,正常了!

grpc底层用的是http2来连接的,通过node.js做服务的,所以可能是这个原因导致hyperf关闭!

猜你喜欢

转载自blog.csdn.net/lchmyhua88/article/details/117194298