redis Laravel Echo无法监听ReactJS

0kjbasz6  于 2023-06-28  发布在  Redis
关注(0)|答案(1)|浏览(135)

我正在尝试使用socket.io,redis和laravel-echo-server创建真实的通知。我的laravel-echo-server工作正常,我的web应用程序中的每个刷新页面的输出都是这样的:

  1. [2023-06-25T04:15:30.117Z] - xvGR5sWQuYpxJw5JAAAR joined channel: change-channel

这意味着它连接。这些命令的控制台也在工作:

  1. useEffect(() => {
  2. window.Echo = new Echo({
  3. client: socketio,
  4. broadcaster: "socket.io",
  5. host: "http://127.0.0.1:6001",
  6. })
  7. window.Echo.connector.socket.on("connect", function () {
  8. console.log("connect success")
  9. })
  10. window.Echo.connector.socket.on("disconnect", function () {
  11. console.log("disconnected")
  12. })

但这一个

  1. window.Echo.channel("change-channel").listen("change-event", (event) => {
  2. console.log("ChangeEvent received:", event)
  3. })

不起作用以下是我活动:

  1. class ChangeEvent implements ShouldBroadcast
  2. {
  3. use Dispatchable, InteractsWithSockets, SerializesModels;
  4. /**
  5. * Create a new event instance.
  6. */
  7. public function __construct()
  8. {
  9. //
  10. }
  11. /**
  12. * Get the channels the event should broadcast on.
  13. *
  14. * @return array<int, \Illuminate\Broadcasting\Channel>
  15. */
  16. public function broadcastOn(): array
  17. {
  18. return [
  19. new Channel('change-channel'),
  20. ];
  21. }
  22. public function broadcastAs()
  23. {
  24. return 'change-event';
  25. }

它在我的laravel-echo-server cli中捕获了事件,如下所示

  1. Channel: laravel_database_change-channel
  2. Event: change-event

我已经尝试改变名称一样的CLI的输出。并在事件前面加上点。名字,但它仍然不工作。我错过了什么吗?先谢谢你了!

o2g1uqev

o2g1uqev1#

我需要把两种解决方案结合起来

  1. window.Echo.channel("laravel_database_change-channel").listen(".change-event", (event) => {
  2. console.log("ChangeEvent received:", event)
  3. })

相关问题