io.js 1.8 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. });
  22. instrument(io, {
  23. auth: {
  24. type: "basic",
  25. username: process.env.WATCH_USER,
  26. password: bcrypt.hashSync(process.env.WATCH_PASSWORD, 10),
  27. },
  28. namespaceName: "/watch",
  29. });
  30. // const prometheus = PrometheusSocketIo.init({
  31. // io, // io.Server
  32. // collectDefaultMetrics: false // Collect some Node.js-specific metrics.
  33. // })
  34. // console.log('prometheus',prometheus)
  35. Server.prototype.ready = function(){
  36. return new Promise((resolve,reject)=>{
  37. Promise.all([pubClient.connect(), subClient.connect()])
  38. .then(() => {
  39. io.adapter(createAdapter(pubClient, subClient));
  40. logger.info("redis is conetcted");
  41. resolve(true);
  42. })
  43. .catch((error) => {
  44. reject(error);
  45. logger.error("redis is connect fail", error);
  46. });
  47. })
  48. }
  49. // Promise.all([pubClient.connect(), subClient.connect()])
  50. // .then(() => {
  51. // io.adapter(createAdapter(pubClient, subClient));
  52. // logger.info("redis is conetcted");
  53. // })
  54. // .catch((error) => {
  55. // logger.error("redis is connect fail", error);
  56. // });
  57. export { io };