laravel - 使用 Laravel Echo、laravel-echo-server 和 socket.io 进行广播不起作用

标签 laravel websocket redis

我已经通过自己的实现成功地使用 Laravel 设置了 websockets。但是,经过数小时的尝试和阅读我能找到的每一篇文档后,我确实需要进一步的帮助。

"laravel-echo": "^1.5.2",
"socket.io-client": "^2.2.0",

这是我的.env 文件详细信息

BROADCAST_DRIVER=redis
CACHE_DRIVER=file
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
SESSION_LIFETIME=120

laravel-echo-server.json

 "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,

示例事件文件

public function broadcastOn()
    {
        return new Channel('test-event');
    }

    public function broadcastWith(){
        return [
            'data' => 'key'
        ];
    }

我的Bootstrap.js

window.Echo.channel('test-event')
    .listen('ExampleEvent', (e) => {
        console.log(e);
    });

实现时

Laravel 回声服务器:

[10:03:50 PM] - F07Nv9alc-Bsh3LEAAAB joined channel: test-event [10:04:16 PM] - F07Nv9alc-Bsh3LEAAAB left channel: test-event (transport close) Channel: test-event Event: App\Events\ExampleEvent

Redis:

1548349380.228566 [0 127.0.0.1:53929] "EVAL" "-- Pop the first job off of the queue...\nlocal job = redis.call('lpop', KEYS[1])\nlocal reserved = false\n\nif(job ~= false) then\n -- Increment the attempt count and place job on the reserved queue...\n reserved = cjson.decode(job)\n reserved['attempts'] = reserved['attempts'] + 1\n reserved = cjson.encode(reserved)\n redis.call('zadd', KEYS[2], ARGV[1], reserved)\nend\n\nreturn {job, reserved}" "2" "queues:default" "queues:default:reserved" "1548349470" 1548349380.228773 [0 lua] "lpop" "queues:default"

此声明不断重复..

Moreover there is no output in browser

最佳答案

您需要在 laravel-echo-config.json 文件中设置 redis 配置,以便它知道从哪里“请求消息”,一个例子:

"databaseConfig": {
    "redis": {
        "host": "http://127.0.0.1"
        "port": "6379"
    },
}

关于laravel - 使用 Laravel Echo、laravel-echo-server 和 socket.io 进行广播不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351992/

相关文章:

php - Laravel 4 如何使用 ajax 和 json 返回多个 View 数据?

javascript - 如果使用 fetch 调用,Laravel 5.6 Auth::check() 返回 false

websocket - 如何启用 Fulcro Websockets

python - 测试 : testing a websocket connection

android - 将现有的 WebSocket 实现转换为 Android Java 中的 Reactive WebSocket

spring - 如何在 Spring Boot 应用程序的 Redis 缓存管理器中设置不同缓存的最大条目数?

javascript - 在内容框中制作 bs4 导航栏

php - 使用 Eloquent 在 Laravel 中实现 group_by 和 having

node.js - 使用 LUA 触发 Redis HMSET

php - Laravel 5.2 队列作业不断重试