聊天频道上查看在线状态/状态。 如何确定服务器上是否有人在线?
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('下线事件')
}