首页 > 解决方案 > Laravel Echo / Socket.io 在睡眠后保持连接活跃

问题描述

我在后端(使用默认配置)和Vue前端使用laravel echo server+ 。Redislaravel-echosocket.io-client

这是我的用例:每当提交新订单时,我都会使用laravel-echo新提交的订单来更新订单列表。

只要连接的设备(即 iPhone)处于唤醒状态,一切正常。

我的问题是在设备处于睡眠状态时提交新订单的情况。唤醒设备后,订单列表不会更新(如果在唤醒设备后提交了新订单 - 列表会按应有的方式更新)。

如何使用设备休眠时提交的新订单更新列表?

标签: laravelvue.jsredissocket.iolaravel-echo

解决方案


This is what I got so far. Eager to see if there is a better idea:

export default {
  async beforeMount () {
    await this.updateOrders()

    const vm = this
    Echo.channel('update-orders-channel')
      .listen('NewOrderEvent', async (e) => {
        await vm.updateOrders(e)
      })

    Echo.connector.socket.on('reconnecting', async () => {
      await vm.updateOrders()
    })
  }
}

推荐阅读