index.ts 980 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import express from "express";
  2. import { IMessageHandler } from "../../../messageHandler";
  3. import { IMessage } from "../../../models/message";
  4. import { IRealm } from "../../../models/realm";
  5. export default ({ realm, messageHandler }: { realm: IRealm; messageHandler: IMessageHandler; }): express.Router => {
  6. const app = express.Router();
  7. const handle = (req: express.Request, res: express.Response, next: express.NextFunction): any => {
  8. const { id } = req.params;
  9. if (!id) return next();
  10. const client = realm.getClientById(id);
  11. if (!client) {
  12. throw new Error(`client not found:${id}`);
  13. }
  14. const { type, dst, payload } = req.body;
  15. const message: IMessage = {
  16. type,
  17. src: id,
  18. dst,
  19. payload
  20. };
  21. messageHandler.handle(client, message);
  22. res.sendStatus(200);
  23. };
  24. app.post("/offer", handle);
  25. app.post("/candidate", handle);
  26. app.post("/answer", handle);
  27. app.post("/leave", handle);
  28. return app;
  29. };