Skip to content

Commit

Permalink
feat(service): ping
Browse files Browse the repository at this point in the history
  • Loading branch information
hywax committed Dec 28, 2023
1 parent ecdf4fb commit 4d38c00
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
19 changes: 19 additions & 0 deletions components/service/Ping.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<template>
<ServiceBases v-bind="props">
<template #description>
Server responded in <span class="border-b border-dashed">{{ ping?.time || 0 }}ms</span>
</template>
</ServiceBases>
</template>

<script setup lang="ts">
import type { PingService } from '~/types/services'
import ServiceBases from '~/components/service/Base.vue'
const props = defineProps<PingService>()
const { data: ping, refresh } = await useFetch('/api/services/ping', { query: { id: props.id } })
const { pause } = useIntervalFn(refresh, props?.options?.interval || 10000, { immediate: true })
onBeforeUnmount(pause)
</script>
18 changes: 18 additions & 0 deletions server/api/services/ping.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { PingService } from '~/types'

export default defineEventHandler(async (event) => {
const service = await getService<PingService>(event)

try {
const startTime = new Date().getTime()
await $fetch(service.link)
const endTime = new Date().getTime()
const time = endTime - startTime

return { time }
} catch (e) {
console.error(e)
}

return { time: -1 }
})
6 changes: 6 additions & 0 deletions types/services.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@ export interface BaseService {
options?: Record<string, string | number | boolean>
secrets?: Record<string, string | number | boolean>
}

export interface PingService extends BaseService {
options?: {
interval?: number
}
}

0 comments on commit 4d38c00

Please sign in to comment.