Skip to content

Instantly share code, notes, and snippets.

@receptor
Created March 20, 2019 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save receptor/915513c2ab979537978a66bcb08a1e01 to your computer and use it in GitHub Desktop.
Save receptor/915513c2ab979537978a66bcb08a1e01 to your computer and use it in GitHub Desktop.
Publish HTTP request to Redis channel
process.on("SIGINT", () => process.exit());
import * as bodyParser from "body-parser";
import express from "express";
import redis from "redis";
// logger
const now = () => new Date().toISOString();
const loggerFacility = console;
const logger = {
error: (...args: any[]) => loggerFacility.error(now(), ...args),
log: (...args: any[]) => loggerFacility.log(now(), ...args),
};
// publisher
const publisher = redis.createClient();
publisher.on("ready", () => logger.log("publisher ready"));
publisher.on("connect", () => logger.log("publisher connected to", publisher.address));
publisher.on("error", logger.error);
// server
const server = express();
server.use(bodyParser.json());
server.get("/:channel/:message", (req, res) => {
try {
const { channel, message } = req.params;
publisher.publish(channel, message, () => logger.log({channel, message}));
res.send("OK");
} catch (e) {
logger.error(e);
res.sendStatus(500);
}
});
server.post("/:channel", (req, res) => {
try {
const [ channel, message ] = [ req.params.channel, JSON.stringify(req.body) ];
publisher.publish(channel, message, () => logger.log(now(), {channel, message}));
res.send("OK");
} catch (e) {
logger.error(e);
res.sendStatus(500);
}
});
server.listen(3333, () => logger.log("server listening on", 3333));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment