带有 SSL 的 WebSocket,无需 httpd.conf 访问

问题描述

我正在尝试使用 Ratchet PHP 创建 WebSocket 服务器并通过 JavaScript 连接到它。

PHP

$server = IoServer::factory(
    new HttpServer(
    new WsServer(
        new Chat()
    )
),8080
);
echo("Address: " . $server->socket->getAddress() . "\n");
$server->run();

JS(客户端):

<script>
    var conn = new WebSocket('ws://example.com:8080/socket/sockets/Chat.PHP');
    conn.onopen = function(e) {
        console.log("Connection established!");
        conn.send('Hello World!');
    };

    conn.onmessage = function(e) {
        console.log(e.data);
    };
</script>

这很好用,或者至少可以,如果我的连接不是 HTTPS,所以不接受 WS 协议(firefox 说 Uncaught DOMException: The operation is insecure)。所以我试图用 WSS 来做这件事,比如这里 https://stackoverflow.com/a/28393526/15411013,但我无权访问 SSH,也无权访问 httpd.conf 文件。我在本地计算机上执行此操作并且运行良好,只是我在此处具有该访问权限并且我需要它在服务器上运行。

是否可以在没有访问权限的情况下制作代理?在 htdocs 文件或其他地方?我试图用网上找到的代码添加 htaccess:

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*)           ws://example.com:8080/socket/sockets/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /(.*)           http://example.com:8080/socket/sockets/$1 [P,L]

但这似乎不起作用。 感谢帮助

解决方法

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

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

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

相关问答

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