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
|
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
|
||||||
@ -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"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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');
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
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();
|
socket.registerWebSocketHandler();
|
||||||
|
|
||||||
const wsServer = new WebhookServer([socket]);
|
sockets.push(socket);
|
||||||
wsServer.listen(8080);
|
});
|
||||||
|
|
||||||
|
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