add configuration by env var
All checks were successful
Build and push image for websocket http cache / docker (push) Successful in 9s
All checks were successful
Build and push image for websocket http cache / docker (push) Successful in 9s
This commit is contained in:
parent
6c73c578a0
commit
421a91bc86
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"dotenv.enableAutocloaking": false
|
||||
}
|
||||
@ -8,5 +8,7 @@ ADD package.json package.json
|
||||
RUN bun install
|
||||
WORKDIR /home/bun/app
|
||||
|
||||
ENV PORT 8080
|
||||
|
||||
# start server
|
||||
CMD bun run ./src/server.ts
|
||||
@ -5,6 +5,9 @@
|
||||
"devDependencies": {
|
||||
"@types/bun": "latest"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "bun run src/server.ts"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5.0.0"
|
||||
},
|
||||
|
||||
@ -13,6 +13,10 @@ export class WebhookServer {
|
||||
|
||||
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) => {
|
||||
const wsName = c.req.param('wsName');
|
||||
|
||||
|
||||
@ -1,8 +1,31 @@
|
||||
import { WebhookServer } from "./WebhookServer";
|
||||
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;
|
||||
|
||||
const sockets: WebSocketLifecycle[] = [];
|
||||
|
||||
// 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();
|
||||
|
||||
const wsServer = new WebhookServer([socket]);
|
||||
wsServer.listen(8080);
|
||||
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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user