gpt4 book ai didi

javascript - 使用 Ratchet 网络套接字时如何定义路由?

转载 作者:行者123 更新时间:2023-11-30 12:20:09 24 4
gpt4 key购买 nike

我是网络套接字领域的新手。我正在尝试创建一个基于 PHP 的简单实时应用程序。我发现 Ratchet 是 PHP 的最佳选择之一,因为它简化了 native PHP 套接字编程。我遵循了 Ratchet 官方网站上的“Hello world”教程 hello world .本教程是基础教程,它只是展示了如何通过 Web 浏览器控制台制作整个教程。

根据教程,它提供了一个简单的 shell 脚本,我们需要执行该脚本,以便 Ratchet 网络套接字作为服务与 Apache 服务器一起运行。以下是 Shell 脚本:

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

require dirname(__DIR__) . '/vendor/autoload.php';

$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080
);

$server->run();

在上面的代码中,它表示可以通过端口 8080 访问 Web 套接字。我去了浏览器,浏览器 localhost:8080 服务器运行没有任何错误,浏览器中的 localhost:8080 显示没有任何错误。我想一切都很顺利。

接下来是从客户端建立连接,这可以通过在浏览器控制台中提供 javascript 代码来完成。 (下面是javascript代码)

var conn = new WebSocket('ws://localhost:8080');
conn.onopen = function(e) {
console.log("Connection established!");
};

conn.onmessage = function(e) {
console.log(e.data);
};

当我运行上面的代码时,连接建立没有任何错误。现在的问题是我不知道把上面的 JavaScript 代码放在哪里,这样我就不必每次都在控制台中编写。我想它应该保存在一些javascript文件中。上面的代码在端口 localhost:8080 中工作。但是我怎么能明确提到链接 localhost:8080/chat.php where chat.php 将是将在浏览器中显示的所需页面,也许我可以将上面的 JavaScript 代码放在同一个文件。

我不知道我的问题是否有效,我在这个领域太新手了。我也问了另一个问题Binding ZMQ Socket and Ratchet关于同一主题,但尚未满意。

最佳答案

为了使用路由,您需要使用 Ratchet 内置的 Symphony 路由功能。

基本上你的套接字初始化看起来像这样

$app = new Ratchet\App("localhost", 8080, '0.0.0.0', $loop);
$app->route('/chat', new Chat, array('*'));

$app->run();

本教程将更详细地介绍 PHP WebSockets 的一些更简单的技巧

https://blog.samuelattard.com/the-tutorial-for-php-websockets-that-i-wish-had-existed/

关于javascript - 使用 Ratchet 网络套接字时如何定义路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31375492/

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