io.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import http from "http";
  2. import bcrypt from "bcrypt";
  3. import { Server } from "socket.io";
  4. import { instrument, RedisStore } from "@socket.io/admin-ui";
  5. import { createAdapter } from "@socket.io/redis-adapter";
  6. import { pubClient, subClient } from "../connection/redis.js";
  7. import { logger } from "./logger.js";
  8. import customParser from "socket.io-msgpack-parser";
  9. // import { PrometheusSocketIo } from 'socket.io-prometheus-v3';
  10. console.log("process.env.SOCKET_PATH", process.env.SOCKET_PATH);
  11. // console.log('PrometheusSocketIo',PrometheusSocketIo)
  12. const httpServer = http.createServer();
  13. const io = new Server(httpServer, {
  14. cors: {
  15. origin: "*",
  16. },
  17. path: process.env.SOCKET_PATH || "",
  18. pingInterval: 10000,
  19. pingTimeout: 5000,
  20. parser: customParser,
  21. transports: ["websocket"],
  22. });
  23. instrument(io, {
  24. auth: {
  25. type: "basic",
  26. username: process.env.WATCH_USER,
  27. password: bcrypt.hashSync(process.env.WATCH_PASSWORD, 10),
  28. },
  29. namespaceName: "/watch",
  30. });
  31. // const prometheus = PrometheusSocketIo.init({
  32. // io, // io.Server
  33. // collectDefaultMetrics: false // Collect some Node.js-specific metrics.
  34. // })
  35. // console.log('prometheus',prometheus)
  36. Server.prototype.ready = function () {
  37. return new Promise((resolve, reject) => {
  38. Promise.all([pubClient.connect(), subClient.connect()])
  39. .then(() => {
  40. io.adapter(createAdapter(pubClient, subClient));
  41. logger.info("redis is conetcted");
  42. resolve(true);
  43. })
  44. .catch((error) => {
  45. reject(error);
  46. logger.error("redis is connect fail", error);
  47. });
  48. });
  49. };
  50. // Promise.all([pubClient.connect(), subClient.connect()])
  51. // .then(() => {
  52. // io.adapter(createAdapter(pubClient, subClient));
  53. // logger.info("redis is conetcted");
  54. // })
  55. // .catch((error) => {
  56. // logger.error("redis is connect fail", error);
  57. // });
  58. export { io };