如何在使用棘轮web插座时定义路线?

问题描述:

我对这个领域的网络套接字很陌生。我正在尝试创建一个基于PHP的简单实时应用程序。我发现Ratchet是PHP的最佳选择之一,因为它简化了原生的PHP套接字编程。我遵循棘轮官方网站hello world中的'Hello world'教程。本教程是基本的,它只是展示了如何通过Web浏览器控制台制作整个教程。如何在使用棘轮web插座时定义路线?

根据本教程,它提供了一个简单的shell脚本,我们需要执行该脚本,以便Ratchet web套接字作为服务与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(); 

在上面的代码,它说,网络插座是通过port 8080访问。我去浏览器和浏览器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,其中chat.php将成为浏览器中显示的所需页面,也许我可以将上面的JavaScript代码放在同一个文件中。

我不知道如果我的问题是否有效,我只是这个领域的初学者。我还问过关于同一主题的另一个问题Binding ZMQ Socket and Ratchet,但尚未得到满足。

为了使用路线,您需要使用内置在棘轮中的Symphony Routing功能。

基本上你的插座初始化是这样的

$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/

+0

一些简单的技巧,但在如何工作的路线:IO服务器: :工厂(新的HttpServer(新的WsServer([...]))); ? –