gpt4 book ai didi

php - 如何从 PHP Server NOT Javascript 连接到 Websocket Server

转载 作者:行者123 更新时间:2023-12-04 16:13:08 25 4
gpt4 key购买 nike

我正在运行 Ratchet websocket 服务器。由于一些复杂的情况,我需要能够通过我的 PHP 服务器与这个 websocket 服务器通信 实时不是 Javascript 能够向它发送信息,然后将其传递给连接到它的任何客户端。

我在 stackoverflow 上做了一些查看,但一切都是关于如何使用 PHP 创建 websocket 服务器的。这不是我要找的。

下面是我想要实现的目标的视觉效果。

enter image description here

这里的关键是如何使用PHP连接到像 Ratchet 这样的Websocket服务器?

我尝试过/考虑过的事情:

我已经考虑使用序列化方法。这将在数​​据库中序列化和反序列化。我不确定这是否比这种方法更好,请指教。

这是我开始的地方:Ratchet Store Connection of User & Send Message Outside of Server Instance

最佳答案

我建议使用 REST 作为 API 层来在你的 Symfony 应用程序和 Ratchet 应用程序之间进行通信。因为在 Symfony 应用程序中使用 Websocket 没有多大意义。 Websockets 用于双向实时通信,而您只需要从 Symfony 应用程序发送一条数据。为此,HTTP REST API 会更方便。
总结一下,在您的 Ratchet 应用程序中,您使用 2 个服务器(Ratchet 允许在单个应用程序中创建任意数量的服务器):web-socket 服务器和 http-server。在您的 Symfony 应用程序中,您将传统的 HTTP 请求发送到您的 Ratchet 服务器。

enter image description here

您可以在单个应用程序中创建多个 Ratchet 服务器,如下所示:

// 1. Create the event loop
$loop = React\EventLoop\Factory::create();

// 2. Create servers
// websocket
$webSock = new React\Socket\Server($loop);
new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer( $wsConnectionsHandler )
),
$webSock
);
$webSock->listen($portWS, '0.0.0.0');

// http
$httpSock = new React\Socket\Server($loop);
new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
$HTTPConnectionsHandler
),
$httpSock
);
$httpSock->listen($portHTTP, '0.0.0.0');

// 3. Run the loop
$loop->run();

How do I pass the information from the http server to the websocket server?



React/Ratchet 应用程序是一个事件驱动的应用程序,就像一个典型的 NodeJS 应用程序。因此,应用程序组件相互通信的最佳方式是调度/订阅事件。例如,您创建 $eventDispatcher对象,将其传递给每个组件(http-handler 和 ws-handler),然后使用 $eventDispatcher->subscibe(eventName, func)$eventDispatcher->emit(eventName, data)订阅事件并相应地分派(dispatch)它们。

如果您不相信,那么您需要使用 Websocket 客户端库来连接到 Websocket 服务器。有几个,google一下。我个人从未使用过 PHP websocket-client 库,所以我不推荐任何。

关于php - 如何从 PHP Server NOT Javascript 连接到 Websocket Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43108615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com