add configuration by env var
All checks were successful
Build and push image for websocket http cache / docker (push) Successful in 9s

This commit is contained in:
Martin Dimitrov 2024-09-30 11:49:33 -07:00
parent 6c73c578a0
commit 421a91bc86
5 changed files with 39 additions and 4 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"dotenv.enableAutocloaking": false
}

View File

@ -8,5 +8,7 @@ ADD package.json package.json
RUN bun install RUN bun install
WORKDIR /home/bun/app WORKDIR /home/bun/app
ENV PORT 8080
# start server # start server
CMD bun run ./src/server.ts CMD bun run ./src/server.ts

View File

@ -5,6 +5,9 @@
"devDependencies": { "devDependencies": {
"@types/bun": "latest" "@types/bun": "latest"
}, },
"scripts": {
"start": "bun run src/server.ts"
},
"peerDependencies": { "peerDependencies": {
"typescript": "^5.0.0" "typescript": "^5.0.0"
}, },

View File

@ -13,6 +13,10 @@ export class WebhookServer {
this.app.use(prettyJSON()); this.app.use(prettyJSON());
this.websockets.forEach(ws => {
console.log(`SERVER: subscribed to ${ws.name} at /api/${ws.name}`);
});
this.app.get(`/api/:wsName`, async (c) => { this.app.get(`/api/:wsName`, async (c) => {
const wsName = c.req.param('wsName'); const wsName = c.req.param('wsName');

View File

@ -1,8 +1,31 @@
import { WebhookServer } from "./WebhookServer"; import { WebhookServer } from "./WebhookServer";
import { WebSocketLifecycle } from "./WebSocketLifeCycle"; import { WebSocketLifecycle } from "./WebSocketLifeCycle";
const socket = new WebSocketLifecycle("wss://ntfy.chromart.cc/buzzer/ws", "buzzer"); const port: number = process.env.PORT ? parseInt(process.env.PORT): 8080;
socket.registerWebSocketHandler();
const wsServer = new WebhookServer([socket]); const sockets: WebSocketLifecycle[] = [];
wsServer.listen(8080);
// read all envs like SUB_<NAME>=<URL>
Object.keys(process.env).forEach(e => {
if (!e.startsWith("SUB_")) {
return;
}
const name = e.split("_")[1].toLowerCase();
const url = process.env[e] as string;
const socket = new WebSocketLifecycle(url, name);
socket.registerWebSocketHandler();
sockets.push(socket);
});
if (sockets.length === 0) {
console.warn("There is no sockets registered, exiting");
console.warn("USAGE: Please configure urls with environment varibles");
console.warn("\tSUB_<name>=<socket url>");
} else {
console.log(`listening on ${sockets.length} websockets`);
const wsServer = new WebhookServer(sockets);
wsServer.listen(port);
}