gpt4 book ai didi

php - 无法连接到我的 Ratchet/WebSocket 服务器

转载 作者:行者123 更新时间:2023-12-04 16:14:28 26 4
gpt4 key购买 nike

我一直在尝试让我的 WebSocket 服务器(在 PHP 中使用 Ratchet)运行一天的大部分时间,我觉得我已经尝试了一切,但仍然没有运气。当我尝试在 JS 中连接到 WebSocket 服务器时,它只需要很长时间然后超时,本质上,服务器接受连接(我不会立即收到连接被拒绝的错误),但随后什么也不做。

我正在运行带有 LEMP 堆栈的 14.04 Ubuntu。我找到了大量的 nginx 配置来完成这项工作,但没有一个对我有用。奇怪的是,它与我的虚拟机在本地运行得非常好,它也运行 LEMP 堆栈,具有几乎相同的 nginx 配置。我从来不需要在我的 nginx 中配置任何东西来使 websockets 工作。

我一直在使用一个非常基本的 Ratchet 示例来测试这个:http://socketo.me/docs/hello-world

我完全迷失了,任何帮助将不胜感激!

编辑:

好的,所以我发现我需要将我的 proxy_pass 设置在与根路径不同的路径上才能使其工作。所以最初我有这个:

location / {
proxy_pass http://localhost:1111;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

try_files $uri $uri/ /index.php?$query_string;
}

但不是我把它改成这个,它正在工作:
location /ws/ {
proxy_pass http://localhost:1111;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location / {
try_files $uri $uri/ /index.php?$query_string;
}

但是,如果可能的话,我仍然想配置它以使用根 url(我的意思是,它应该是因为在我的本地 Homestead 机器上它确实在根路径上工作)

最佳答案

不久前我写了一篇关于此的精彩教程,我认为它涵盖了您遇到的问题。

基本上你不能有 try_files和代理在同一个 location堵塞。导致 0 问题的最简单的解决方法是在具有自己的服务器定义的子域之外运行 WebSocket。

在此处查看教程:http://blog.samuelattard.com/using-nginx-as-a-proxy-for-websocket-connections/

关于php - 无法连接到我的 Ratchet/WebSocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605606/

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