45 lines
1.0 KiB
JavaScript
45 lines
1.0 KiB
JavaScript
const http = require('node:http');
|
|
const faye = require('faye');
|
|
const url = require('url');
|
|
const pkg = require('./package.json')
|
|
require('dotenv').config()
|
|
|
|
var server = http.createServer(),
|
|
bayeux = new faye.NodeAdapter({ mount: '/faye' });
|
|
|
|
|
|
bayeux.on('subscribe', function (clientId, channel) {
|
|
console.log(`bayeux client ${clientId} subscribed to ${channel}`)
|
|
})
|
|
|
|
const client = bayeux.getClient()
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
function publish(msg) {
|
|
client.publish('/signals', {
|
|
text: msg
|
|
})
|
|
}
|
|
|
|
setInterval(() => {
|
|
publish('Hello mocha!')
|
|
}, 1000);
|
|
}
|
|
|
|
|
|
|
|
server.on('request', (req, res) => {
|
|
const parsedUrl = url.parse(req.url, true);
|
|
if (parsedUrl.pathname === '/metrics') {
|
|
// Handle the /metrics route
|
|
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
|
res.end(`version=${pkg.version}`);
|
|
}
|
|
});
|
|
|
|
bayeux.attach(server);
|
|
const port = process.env.PORT || 5000;
|
|
console.log(`listening on ${port}`);
|
|
server.listen(port);
|
|
|