1

对于一个新项目,我需要实现远程桌面协议。远程地址需要保护,并且可能永远不会发送给客户端。经过大量研究和一些测试,我找到了Guacamole,它也有一个 Java 客户端。不过,该项目被设计为 API,因此我开始将 Java 客户端示例的一些部分移植到 PHP。

用例如下:

  • 用户登录我的服务(Laravel 应用程序)
  • WebSocket 连接建立到一个持续运行的 PHP 脚本(使用HOA\WebSocket
  • 授权后,需要为鳄梨酱守护进程建立 TCP 套接字
  • 通过 WebSocket 发出的命令需要定向到 Guacamole Daemon,反之亦然

使这变得复杂的原因是应用程序需要能够同时为多个客户端提供服务。需要建立多个 TCP 套接字,并且需要同时管理多个 WebSocket 连接。

对于我的简单测试,我打开了套接字fsockopen,然后循环等待数据。有了这个,我显然不能一次听多个套接字(至少实际上是这样),但我偶然发现了React Socket Client 库

将此库视为fsockopen()or的异步版本stream_socket_client()

这听起来像是我需要的,但话又说回来,我正在使用 HOA 及其 WeSocket 服务器,它显然也在循环中运行(调用时WebsocketConnectionHandler->run())。

我应该使用 React 的 Socket Client 还是应该尝试使用 HOA 的 Socket 库(因为我已经在使用 WebSocket 了)?React 和 HOA 在它们的事件循环中是否兼容,所以我可以同时监听 WebSocket 客户端和 TCP 连接吗?

如果是这样,谁能给我一些关于如何开始耦合这两者的提示或示例?谢谢!

4

0 回答 0