diff --git a/server/docs/swagger_output.json b/server/docs/swagger_output.json index 1c838f2..7c6b274 100644 --- a/server/docs/swagger_output.json +++ b/server/docs/swagger_output.json @@ -60,6 +60,16 @@ } } }, + "/api/ping": { + "get": { + "description": "", + "responses": { + "default": { + "description": "" + } + } + } + }, "/api/spotify/login": { "get": { "tags": [ diff --git a/server/events/consumers.ts b/server/events/consumers.ts index b3c7c1b..d85c564 100644 --- a/server/events/consumers.ts +++ b/server/events/consumers.ts @@ -1,7 +1,8 @@ -import { createConsumer } from '@jukebox/lib' +import { createConsumer, logger } from '@jukebox/lib' export const registerConsumers = async () => { createConsumer('ping-pong', (data) => { - console.log('pong') + const logData = data ?? 'No data received.' + logger.info(`Pong: ${logData}`) }) } diff --git a/server/events/producers.ts b/server/events/producers.ts new file mode 100644 index 0000000..fd61361 --- /dev/null +++ b/server/events/producers.ts @@ -0,0 +1,3 @@ +import { createProducer } from '@jukebox/lib' + +export const producePing = createProducer('ping-pong') diff --git a/server/routes/router.ts b/server/routes/router.ts index f572294..3d2174e 100644 --- a/server/routes/router.ts +++ b/server/routes/router.ts @@ -1,13 +1,14 @@ import { Router } from 'express' +import { docsMiddleware } from '../middleware/docsMiddleware' import * as baseViews from '../views/baseViews' import { groupRoutes } from './groupRoutes' import { spotifyRouter } from './spotifyRoutes' import { userRouter } from './userRoutes' -import { docsMiddleware } from '../middleware/docsMiddleware' const router = Router() router.get('/', baseViews.healthcheck) router.get('/api', baseViews.apiHelp) +router.get('/api/ping', baseViews.pingPongView) router.use(docsMiddleware) router.use('/api/spotify', spotifyRouter) diff --git a/server/views/baseViews.ts b/server/views/baseViews.ts index 3e9dbdb..3ed535b 100644 --- a/server/views/baseViews.ts +++ b/server/views/baseViews.ts @@ -1,3 +1,4 @@ +import { producePing } from 'server/events/producers' import { apiRequest } from 'server/utils' /** @@ -35,3 +36,8 @@ export const apiHelp = apiRequest((req, res) => { documenation: `${baseUrl}/api/docs/` } }) + +export const pingPongView = apiRequest((req, res) => { + const data = 'Ping from api.' + producePing(new Date().toLocaleTimeString(), data) +}) diff --git a/tsconfig.json b/tsconfig.json index 25699ee..dcf4247 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,7 +38,7 @@ "server/*": ["./server/*"], "websocket/*": ["./websocket/*"], "common/*": ["./common/*"], - "*": ["./*", "./server/*", "./websocket/*", "./common/*"] + "*": ["./*", "./server/*", "./websocket/*",] } /* Specify a set of entries that re-map imports to additional lookup locations. */, // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ "typeRoots": [ diff --git a/websocket/events/consumers.ts b/websocket/events/consumers.ts new file mode 100644 index 0000000..049ee64 --- /dev/null +++ b/websocket/events/consumers.ts @@ -0,0 +1,14 @@ +/** + * Kafka Consumers + */ + +import { createConsumer, logger } from '@jukebox/lib' +import { socketEmit } from 'websocket/lib' + +export const registerKafkaConsumers = () => { + createConsumer('ping-pong', (data) => { + socketEmit('ping-pong', data) + const logData = data ?? 'No data received.' + logger.info(`Pong: ${logData}`) + }) +} diff --git a/websocket/events/index.ts b/websocket/events/index.ts index 418aa87..fd61533 100644 --- a/websocket/events/index.ts +++ b/websocket/events/index.ts @@ -3,4 +3,4 @@ * @description Manage ingress and egress of data from Kafka * or other event driven data controllers. */ -export * from './kafkaConsumers' +export * from './consumers' diff --git a/websocket/events/kafkaConsumers.ts b/websocket/events/kafkaConsumers.ts deleted file mode 100644 index cd6204c..0000000 --- a/websocket/events/kafkaConsumers.ts +++ /dev/null @@ -1 +0,0 @@ -export const registerKafkaConsumers = () => {} diff --git a/websocket/events/producers.ts b/websocket/events/producers.ts new file mode 100644 index 0000000..a0816f9 --- /dev/null +++ b/websocket/events/producers.ts @@ -0,0 +1,7 @@ +/** + * Kafka Producers + */ + +import { createProducer } from '@jukebox/lib' + +export const producePing = createProducer('ping-pong') diff --git a/websocket/events/socketHandlers.ts b/websocket/events/socketHandlers.ts index eac9605..06cc871 100644 --- a/websocket/events/socketHandlers.ts +++ b/websocket/events/socketHandlers.ts @@ -1,8 +1,10 @@ import { handleSocketSubscribe } from 'websocket/controllers' import type { CustomSocket, SocketNext } from 'websocket/types' +import { producePing } from './producers' export const socketHandlers = (socket: CustomSocket, next: SocketNext) => { socket.on('subscribe', (data) => handleSocketSubscribe(socket, data)) + socket.on('ping-pong', (data) => producePing(new Date().toLocaleTimeString(), data)) next() }