我正在try 使用Laravel中的beyondcode/laravel-websockets包来创建一个RPC WebSocket.

我可以看到laravel-websockets端点上的仪表板,但当我单击连接按钮时,它会在控制台中不断向我显示警告:

WebSocket connection to '<URL>' failed: WebSocket is closed before the connection is established.

TestSockerHandler.php:

<?php

namespace App\Websocket\SocketHandler;


use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\MessageInterface;
use Ratchet\WebSocket\MessageComponentInterface;

class TestSocketHandler implements MessageComponentInterface
{

    function onOpen(ConnectionInterface $conn)
    {
        // TODO: Implement onOpen() method.
        dd($conn->httpRequest);
    }

    function onClose(ConnectionInterface $conn)
    {
        // TODO: Implement onClose() method.
    }

    function onError(ConnectionInterface $conn, \Exception $e)
    {
        // TODO: Implement onError() method.
    }

    public function onMessage(ConnectionInterface $conn, MessageInterface $msg)
    {
        // TODO: Implement onMessage() method.
    }
}

web.php:

\BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter::webSocket('/socket/test', \App\Websocket\SocketHandler\TestSocketHandler::class);

.env:

BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

PUSHER_APP_ID=livepost
PUSHER_APP_KEY=livepost_key
PUSHER_APP_SECRET=livepost_secret
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1

LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT="/etc/letsencrypt/live/mydomain.com/fullchain.pem"
LARAVEL_WEBSOCKETS_SSL_LOCAL_PK="/etc/letsencrypt/live/mydomain.com/privkey.pem"
LARAVEL_WEBSOCKETS_SSL_PASSPHRASE=""
LARAVEL_WEBSOCKETS_PORT=6001

composer.json:

"pusher/pusher-php-server": "7.0.2"
"beyondcode/laravel-websockets": "^1.14"

我在ubuntu服务器上,定义了WebSocket命令的监督者.

/etc/supervisor/conf.d/websockets.conf:

[program:websockets]
process_name=%(program_name)s
command=sudo php artisan websockets:serve --port=8443
directory=/home/my-app/www
autostart=true
autorestart=true
user=root
redirect_stderr=true
stdout_logfile=/home/my-app/www/storage/logs/websockets.log

supervisor状态:

root@my-app:/etc/supervisor/conf.d# supervisorctl status
websockets                       RUNNING   pid 872475, uptime 1:41:26

我已经浪费了2天,但找不到原因.只是因为没有任何错误,我不知道要判断或搜索什么.有没有保存错误日志(log)或smth的东西?我一直在判断laravel.log和nginx error.log,但没有任何关于WebSocket的记录.

推荐答案

对于可能有相同问题的任何人,我只需要将.env文件和config/websockets.php中的端口从6001更改为8443.

Php相关问答推荐

无法使用PHP DomDocument找到IMG元素

Laravel:启动下载并同时在Blade 中显示Flash消息

在WooCommerce中处理客户总支出中的退款

PHP FFI—Convert void * to int

如何在WordPress中为特定自定义帖子类型自定义URL struct

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

在Woocommerce变量产品中的标签附近显示所选属性选项名称

我的邮箱中的链接在我的URL中添加了一个

未收到Strava WebHook事件数据

Laravel路由到控制器传输变量解决方案需要

WooCommerce中特定付款方式的变更订单预留库存时间

打折时更改 Woocommerce 产品名称

根据支付网关选项更改 WooCommerce Checkout 上的立即付款按钮文本

计算添加到购物车的点击次数并将其显示在 WooCommerce 管理产品列表中

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

避免在 WooCommerce 中多次触发挂钩函数

PHP文件如何从CSS执行

PHP header() 是否缓存重定向,如果是,如何防止它这样做?

正则表达式抓取递归括号的内容

WordPress 函数 get_post(post_id) 是否查询数据库?