使用 Ratchet 和 CakePHP 创建 Web 套接字服务器

问题描述

Xampp 在这里控制我的本地虚拟主机进行测试。我正在尝试让棘轮工作并正确创建 Web 服务器。问题是当我告诉系统转​​到 JS 中的 web socket 主机地址时,系统没有响应。

我知道我希望该地址等于当前地址。我将把它放在请求中,以便 JS 知道它是什么,但现在让我们说它 local.ezbusinessmanager.com 作为基本域,我将 Web 套接字服务器的端口设置为 8080。我有在名为 ChatServerCommand 的命令对象中执行此操作。

/**
 * Implement this method with your command's logic.
 * This starts the socket server.
 * Throws random warnings and errors most of the time on purpose.
 * If it makes it all the way through,you win!
 *
 * @param Arguments $args The command arguments.
 * @param ConsoleIo $io The console io
 * @return void The exit code or null for success
 */
public function execute(Arguments $args,ConsoleIo $io): void
{
    $port = $args->getArgument('port') ? intval($args->getArgument('port')) : 8080;
    $domain = Configure::read('App.fullBaseUrl') !== "localhost" ? Configure::read('App.fullBaseUrl') : 'local.ezbusinessmanager.com';
    $this->prepareDomain($domain);
    $io->success("Socket server Now running on ws://$domain:$port");
    $server = new App($domain,$port);
    $server->route($domain,new Chat(),['*']);
    $server->run();
}

/**
 * Remove http,https,www,and slashes from domain string.
 *
 * @param string $domain Domain to be prepared.
 */
public function prepareDomain(string &$domain): void
{
    // If URI is like,eg. www.way2tutorial.com/
    $domain = trim($domain,'/');

    // If not have http:// or https:// then prepend it
    if (!preg_match('#^http(s)?://#',$domain)) {
        $domain = 'http://' . $domain;
    }

    $urlParts = parse_url($domain);

    // Remove www.
    $domain = preg_replace('/^www\./','',$urlParts['host']);
}

当我调用命令时它似乎运行,但是当我到达我的页面时,它告诉我它无法连接 它没有到达服务器,因为如果后端有任何东西,Chat() 对象应该发送日志错误

我用这个脚本调用

"use strict";

const conn = new WebSocket('ws://local.ezbusinessmanager.com:8080');
conn.onopen = () => {
    console.log('connected to server...');
};
conn.onerror = e => {
    console.error('An error has occurred:',e.type);
};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...