laravel-echo-server聊天在线状态/状态,确定服务器上是否有人在线?

万勇
2023-12-01

聊天频道上查看在线状态/状态。 如何确定服务器上是否有人在线?

API客户端
laravelecho服务器公开了一个轻量级的httpapi来执行广播功能。出于安全目的,必须使用应用程序id和密钥对来自http引用程序的这些终结点的访问进行身份验证。这可以使用cli命令生成:

laravel-echo-server client:add APP_ID

如果你跑了客户端:添加不带一个app id参数,将为您生成一个。运行此命令后,客户端id和密钥将显示并存储在laravel echo中-服务器.json文件。
在本例中,只要应用程序id和密钥都随http请求一起提供,就允许请求。

Request Headers
Authorization: Bearer skti68i…
or
http://app.dev:6001/apps/APP_ID/channels?auth_key=skti68i…

您可以使用laravel echo服务器删除客户端客户端
laravel-echo-server client:remove APP_ID

HTTP API
HTTP API 公开端点,允许您收集有关正在运行的服务器和通道的信息。

获取客户端总数、服务器的正常运行时间和内存使用情况。
GET /apps/:APP_ID/status

所有频道的频道列表。
GET /apps/:APP_ID/channels

频道获取有关特定频道的信息。
GET /apps/:APP_ID/channels/:CHANNEL_NAME

频道用户频道上的用户列表
GET /apps/:APP_ID/channels/:CHANNEL_NAME/users

弯道超车法

ajaxSync() {
      console.info('异步下线')

      const url = '/api/v1/chatoffline'
      const options = { method: 'POST', headers: { Authorization: 'Bearer ' + window.localStorage.access_token }}
      // ios 需要这个参数否则不会发送
      if (isIOS()) {
        options['keepalive'] = true
      }
      fetch(url, options)
      }


function offline() {
      window.addEventListener(
        'pagehide',
        () => {
          ajaxSync()// 触发ajax
        },
        false
      )
      window.addEventListener(
        'unload',
        () => {
          ajaxSync()// 触发ajax
        },
        false
      )
      // pc
      // window.addEventListener(
      //   'beforeunload',
      //   () => {
      //     ajaxSync()// 触发ajax
      //   },
      //   false
      // )

      console.log('下线事件')
    }
 类似资料: