标签: laravel-websockets

Laravel websocket 无法连接到推送器 ERR_CERT_AUTHORITY_INVALID

我有一个带有 websockets 的 Laravel 应用程序。我已经为 websocket 和 pusher 配置设置了所有需求。但是每当我测试我的广播频道时

app.js:58283 WebSocket connection to 'wss://127.0.0.1/app/644a4ac1988060882370?protocol=7&client=js&version=6.0.2&flash=false' failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID

当我重新加载时。有时我得到 app.js:55791 WebSocket connection to 'wss://127.0.0.1/app/644a4ac1988060882370?protocol=7&client=js&version=6.0.2&flash=false' failed: WebSocket is closed before the connection is established.

这是我的配置。

广播.php

   'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' => true,
                'host' => '127.0.0.1',
                'port' => 6001,
                'scheme' => 'http',
            ],
        ],
Run Code Online (Sandbox Code Playgroud)

websockets.php

  'apps' => [
        [
            'id' => env('PUSHER_APP_ID'), …
Run Code Online (Sandbox Code Playgroud)

php real-time websocket laravel laravel-websockets

5
推荐指数
2
解决办法
6348
查看次数

使用 Laravel Websockets 绑定 Laravel Echo 上的回调

我想知道我的用户何时出现连接错误或连接断开。我读过很多文章说这是可能的,但我一无所获,我开始认为这可能是我正在使用的第三方(例如https://github.com/beyondcode/laravel-websockets )的问题,有人遇到过这样的问题吗?

以下根本不产生任何日志。

window.Echo.connector.pusher.bind('reconnect', (channel, data) => {
    console.log('RE-CONNECTED');
});

window.Echo.connector.pusher.bind('reconnecting', (channel, data) => {
    console.log('re-connecting...');
});

window.Echo.connector.pusher.bind('reconnect_error', (channel, data) => {
    console.log('reconnection error!');
});

window.Echo.connector.pusher.bind('reconnect_attempt', (channel, data) => {
    console.log('re-connecting...');
});

window.Echo.connector.pusher.bind('connect_error', (channel, data) => {
    console.log('connect error...');
});

window.Echo.connector.pusher.bind('error', (channel, data) => {
    console.log('error...');
});

window.Echo.connector.pusher.bind_global((channel, data) => {
    console.log(channel, data);
});
Run Code Online (Sandbox Code Playgroud)

如果我使用建议的类似内容

window.Echo.connector.socket.on('connect_error', function(){
    console.log('connected', window.Echo.socketId());
});

window.Echo.connector.socket.on('connect', function(){
    console.log('connected', window.Echo.socketId());
});

window.Echo.connector.socket.on('disconnect', function(){
    console.log('disconnected');
});

window.Echo.connector.socket.on('reconnecting', function(attemptNumber){
    console.log('reconnecting', attemptNumber);
});
Run Code Online (Sandbox Code Playgroud)

我明白了Uncaught TypeError: Cannot read …

laravel-echo laravel-websockets

4
推荐指数
1
解决办法
3735
查看次数

Laravel Echo + Websockets + 私人频道

我知道我不是第一个为此苦苦挣扎的人。但几天后,经过很多相关的问题,我觉得我的案子值得它自己的问题:)。

我有一个可用的 websocket 解决方案,包括 Laravel Websockets ( https://beyondco.de/docs/laravel-websockets/getting-started/introduction ) 和用于公共频道的 Laravel Echo 。我的客户端应用程序是一个 vue-cli 应用程序,连接到服务器+公共频道上的广播消息效果很好。授权由 Laravel Passport 处理。因此,通过在授权标头中发送承载令牌,后端应用程序可以知道用户是否已通过身份验证。

然而,我正在努力让私人频道正常工作。尝试进行身份验证总是给我这个错误:

Access to XMLHttpRequest at 'https://my-app.test/broadcasting/auth' from origin 'https://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

我知道当我遇到服务器问题时会出现此 CORS 错误,因此我尝试在 Insomnia 中调试请求。然而,当模仿 Insomnia 中的请求时,它会给出响应 200 以及预期的结果:

Insomnia 中的模仿身份验证请求

我一直在阅读一些指南和 stackoverflow 问题,但找不到类似的内容。回到它可能是 CORS 问题,但我认为情况并非如此。我的 OPTIONS 请求返回得很好。

为了完整起见,我还添加了一些可能有助于调试的代码。

我的广播服务提供商

public function boot()
{
    Broadcast::routes(['middleware' => ['auth:api']]);

    require base_path('routes/channels.php');
}
Run Code Online (Sandbox Code Playgroud)

我的频道.php …

laravel laravel-echo laravel-websockets

3
推荐指数
1
解决办法
4896
查看次数

Laravel web-Socket 安装

我想安装 Laravel Web-Socket 包,但是当我运行此命令时遇到一些错误 Composer require Beyondcode/laravel-websockets

对 Beyondcode/laravel-websockets 使用版本 ^1.12 运行 Composer update Beyondcode/laravel-websockets --with-all-dependencies 使用包信息加载 Composer 存储库 更新依赖项 您的需求无法解析为一组可安装的包。

问题 1 - 根 Composer.json 需要 laravel/framework ^8.65,找到 laravel/framework[v8.65.0, ..., 8.x-dev] 但这些未加载,可能是因为它与另一个需求冲突。

安装失败,将 ./composer.json 和 ./composer.lock 恢复为其原始内容。

这是我的composer.json:

{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
    "php": "^7.3|^8.0",
    "fruitcake/larAavel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "laravel/framework": "^8.65",
    "laravel/sanctum": "^2.11",
    "laravel/tinker": "^2.5"
},

"require-dev": {
    "facade/ignition": "^2.5",
    "fakerphp/faker": "^1.9.1",
    "laravel/sail": "^1.0.1",
    "mockery/mockery": "^1.4.4",
    "nunomaduro/collision": "^5.10", …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-websockets

2
推荐指数
1
解决办法
669
查看次数

Beyondcode/laravel-websockets 软件包未安装在 laravel 10.8 框架上

在 Laravel 10.8框架中使用 Beyondcode/laravel-websockets包,那么它会在命令提示符中导致如下错误

您的要求无法解析为一组可安装的软件包。

我已经在composer.json中设置了所需的设置

"require": {
        "php": "^8.1",
        "beyondcode/laravel-websockets": "^1.14",
        "guzzlehttp/guzzle": "^7.2",
        "laravel/framework": "^10.8",
        "laravel/sanctum": "^3.2",
        "laravel/tinker": "^2.8"
    }
Run Code Online (Sandbox Code Playgroud)

laravel-websockets laravel-10

2
推荐指数
1
解决办法
3646
查看次数

Laravel websockets 无法在推送器中连接

当我运行我的项目时,我收到一个异常错误,但它没有明确的消息。我只有这种主体错误

我可以访问 websocket 管理页面,http://127.0.0.1:8000/laravel-websockets但是当我去的时候http://127.0.0.1:8000/出现以下错误。

The following error was encountered while trying to retrieve the URL: http://127.0.0.1:6001/apps/995591/events?

Connection to 127.0.0.1 failed.

The system returned: (111) Connection refused


The remote host or network may be down. Please try the request again.

Generated Tue, 05 May 2020 17:12:03 GMT by proxyserversetup-s-1vcpu-1gb-sgp1-07 (squid/3.5.27)

Run Code Online (Sandbox Code Playgroud)

我从这个链接中关注了文档中的每一件事

这是我的一些配置

广播.php

 'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' …
Run Code Online (Sandbox Code Playgroud)

php websocket laravel laravel-websockets

0
推荐指数
1
解决办法
5694
查看次数

如何使用 Postman 连接到 Docker 中运行的 laravel-websockets

我想测试通过 laravel-websockets 接收从我的 laravel 应用程序广播的事件。应用程序和 websockets 在 docker 中成功运行,我有主管保持一切正常运行。我的问题是,使用 Postman 的 websocket 功能,我无法连接到 docker 中运行的 websockets 服务器(ws://127.0.0.1:6001)。我得到 404。

docker-compose.yml

version: '2'

services:
  ace-contact-import:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    ports:
      - "8787:80"
      - "6001:6001"
    volumes:
      - ./:/var/www/
    tty: true
  composer:
    build:
      context: .
      dockerfile: ./docker/composer/Dockerfile
    depends_on:
      - ace-contact-import
    volumes_from:
      - ace-contact-import
    tty: true
  redis:
    image: redis:alpine
    container_name: ace-contact-import-redis
    command: redis-server --appendonly yes --requirepass "${REDIS_PASSWORD}"
    volumes:
      - ./data/redis:/data
    ports:
      - "8002:6379"
volumes:
  logvolume01: {}
Run Code Online (Sandbox Code Playgroud)

websockets.php

'apps' => [
        [
            'id' => env('PUSHER_APP_ID'), …
Run Code Online (Sandbox Code Playgroud)

pusher docker postman laravel-websockets laravel-8

0
推荐指数
1
解决办法
3895
查看次数