如何解决无法使用 Laravel 回显服务器接收事件
我打算使用 laravel echo server 和 socket.io 来实现实时通知。我看到客户端成功加入频道,但是客户端无法获得任何触发的事件。我已经尝试了所有可用的前缀,laravel echo 服务器的构建,将 socket.io 回滚到 2.3.0 版本。没什么,就是卡在这里。我觉得这是我看不到的愚蠢的东西,也许有人可以帮我弄清楚。
要广播的事件类:
class TestEvent implements ShouldBroadcast
{
use Dispatchable,InteractsWithSockets,SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('test');
}
public function broadcastAs()
{
return 'TestEvent';
}
public function broadcastWith()
{
return [
'message' => 'Test is successful!'
];
}
}
Docker compose for containerized laravel echo server:
laravel-echo-server:
image: oanhnn/laravel-echo-server
container_name: laravel-echo-server
depends_on:
- redis
environment:
LARAVEL_ECHO_SERVER_AUTH_HOST: http://localhost:8088
LARAVEL_ECHO_SERVER_DEBUG: 'true'
LARAVEL_ECHO_SERVER_DB: redis
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PREFIX: laravel_database_
REDIS_DB: 0
ports:
- 6001:6001
restart: unless-stopped
networks:
- route-planner
客户端监听器:
mounted() {
window.io = require("socket.io-client");
window.Echo = new Echo({
broadcaster: "socket.io",host: "http://localhost:6001"
});
window.Echo.channel(`laravel_database_test`).listen(
".TestEvent",e => {
console.log(e);
}
);
}
laravel echo 服务器的日志:
[1:45:50 PM] - NbOJ_7qN-xVXCZR_AAAA joined channel: laravel_database_test
Channel: laravel_database_test
Event: TestEvent
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。