riot-api-stats
Version:
Riot API Stats service
59 lines (44 loc) • 1.35 kB
JavaScript
const express = require('express')
const path = require('path')
const zmq = require('zmq')
const uuid = require('uuid/v4')
// Load the environment variables
require('dotenv').config()
// ZeroMQ pipeline
const sender = zmq.socket('push')
sender.bind(`tcp://127.0.0.1:${process.env.ZEROMQ_SENDER_PORT}`, (err) => {
if (err) throw err
console.log('ZMQ sender bound!')
})
const receiver = zmq.socket('pull')
receiver.bind(`tcp://127.0.0.1:${process.env.ZEROMQ_RECEIVER_PORT}`, (err) => {
if (err) throw err
console.log('ZMQ receiver bound!')
})
receiver.on('message', (data) => {
console.log(' Received data, sending sockets')
data = JSON.parse(data)
io.emit('stats', data)
})
const msg = (summonerId, region) => {
return JSON.stringify({
summonerId,
region,
id: uuid(),
})
}
// Express and Socket.io server
const app = express()
const server = app.listen(process.env.SERVER_PORT || 3000, () => {
console.log('Example app listening on port 3000!')
})
const io = require('socket.io')(server) // eslint-disable-line
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'))
})
// TODO: Change to post
app.get('/update/stats/:region/:summonerId', (req, res) => {
console.log(' Requesting...')
sender.send(msg(req.params.summonerId, req.params.region))
res.send('Sent to worker')
})