feat: load balance
							parent
							
								
									eb1d0f2303
								
							
						
					
					
						commit
						62f137d884
					
				|  | @ -17,6 +17,7 @@ | |||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@sentry/node": "^5.29.2", | ||||
|     "@socket.io/redis-adapter": "^7.2.0", | ||||
|     "@types/fluent-ffmpeg": "^2.1.21", | ||||
|     "@types/pino": "^6.3.4", | ||||
|     "axios": "^1.2.3", | ||||
|  | @ -41,12 +42,13 @@ | |||
|     "pino": "^6.9.0", | ||||
|     "pino-pretty": "^9.1.1", | ||||
|     "qrcode-terminal": "^0.12.0", | ||||
|     "redis": "^4.6.13", | ||||
|     "reflect-metadata": "^0.1.13", | ||||
|     "sequelize": "^5.22.3", | ||||
|     "sequelize-cli": "^5.5.1", | ||||
|     "sequelize-typescript": "^1.1.0", | ||||
|     "sharp": "^0.32.5", | ||||
|     "socket.io": "^3.0.5", | ||||
|     "socket.io": "^4.7.5", | ||||
|     "socket.io-client": "^4.5.4", | ||||
|     "uuid": "^8.3.2", | ||||
|     "whatsapp-web.js": "github:pedroslopez/whatsapp-web.js", | ||||
|  |  | |||
|  | @ -104,16 +104,16 @@ const monitor = async () => { | |||
|       stdout = stdout[1].trim().split(/\s+/); | ||||
| 
 | ||||
|       // DISK SPACE MONITORING
 | ||||
|       const io = getIO(); | ||||
|       io.emit("diskSpaceMonit", { | ||||
|         action: "update", | ||||
|         diskSpace: { | ||||
|           size: stdout[1], | ||||
|           used: stdout[2], | ||||
|           available: stdout[3], | ||||
|           use: stdout[4] | ||||
|         } | ||||
|       }); | ||||
|       // const io = getIO();
 | ||||
|       // io.emit("diskSpaceMonit", {
 | ||||
|       //   action: "update",
 | ||||
|       //   diskSpace: {
 | ||||
|       //     size: stdout[1],
 | ||||
|       //     used: stdout[2],
 | ||||
|       //     available: stdout[3],
 | ||||
|       //     use: stdout[4]
 | ||||
|       //   }
 | ||||
|       // });
 | ||||
| 
 | ||||
|       let data: any = {}; | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,6 +3,9 @@ import { Server } from "http"; | |||
| import AppError from "../errors/AppError"; | ||||
| import { logger } from "../utils/logger"; | ||||
| 
 | ||||
| import { createAdapter } from "@socket.io/redis-adapter"; | ||||
| import { createClient } from 'redis';  | ||||
| 
 | ||||
| import { v4 as uuidv4 } from "uuid"; | ||||
| import ListUserParamiterService from "../services/UserServices/ListUserParamiterService"; | ||||
| import { | ||||
|  | @ -27,6 +30,7 @@ import { | |||
| } from "../services/WbotServices/wbotMessageListener"; | ||||
| import { join } from "path"; | ||||
| import Whatsapp from "../models/Whatsapp"; | ||||
| import { get } from "../helpers/RedisClient" | ||||
| 
 | ||||
| let count: number = 0; | ||||
| let listOnline: any[] = []; | ||||
|  | @ -42,16 +46,32 @@ let dateTime = splitDateTime( | |||
|   new Date(format(new Date(), "yyyy-MM-dd HH:mm:ss", { locale: ptBR })) | ||||
| ); | ||||
| 
 | ||||
| export const initIO = (httpServer: Server): SocketIO => { | ||||
| 
 | ||||
| const pubClient = createClient({ url: 'redis://172.31.187.29:6379' }); | ||||
| const subClient = pubClient.duplicate(); | ||||
| 
 | ||||
| 
 | ||||
| pubClient.connect().catch(console.error); | ||||
| subClient.connect().catch(console.error);  | ||||
| 
 | ||||
| 
 | ||||
| export const initIO = (httpServer: Server): SocketIO => {  | ||||
| 
 | ||||
|   io = new SocketIO(httpServer, { | ||||
|     cors: { | ||||
|       origin: process.env.FRONTEND_URL | ||||
|       origin: "*", | ||||
|       allowedHeaders: ["my-custom-header"], | ||||
|       credentials: true | ||||
|     }, | ||||
|     maxHttpBufferSize: 1e8 | ||||
|   }); | ||||
|     maxHttpBufferSize: 1e8, | ||||
|     pingInterval: 25000, | ||||
|     pingTimeout: 60000, | ||||
|     adapter: createAdapter(pubClient, subClient) | ||||
|   });  | ||||
|   | ||||
| 
 | ||||
|   io.on("connection", socket => { | ||||
|     logger.info("Client Connected"); | ||||
|     logger.info("Client Connected");   | ||||
| 
 | ||||
|     socket.on("joinWhatsSession", (whatsappId: string) => { | ||||
|       logger.info(`A client joined a joinWhatsSession channel: ${whatsappId}`); | ||||
|  | @ -107,6 +127,7 @@ export const initIO = (httpServer: Server): SocketIO => { | |||
|     socket.on("online", (userId: any) => { | ||||
|       // console.log('userId: ', userId)
 | ||||
| 
 | ||||
|       return | ||||
|       obj.uuid = uuidv4(); | ||||
| 
 | ||||
|       if (userId.logoutUserId) { | ||||
|  | @ -233,13 +254,18 @@ export const initIO = (httpServer: Server): SocketIO => { | |||
|       if (rooms && rooms.size == 2 && ![...rooms][1].startsWith("session_")) | ||||
|         return; | ||||
| 
 | ||||
|       let whatsappIds: any = await Whatsapp.findAll({ | ||||
|         attributes: ["id"], | ||||
|         raw: true | ||||
|          let whatsappIds = await get({ | ||||
|         key: "whatsapp:*", | ||||
|         parse: true | ||||
|       }); | ||||
| 
 | ||||
|       // let whatsappIds: any = await Whatsapp.findAll({
 | ||||
|       //   attributes: ["id"],
 | ||||
|       //   raw: true
 | ||||
|       // });
 | ||||
| 
 | ||||
|       if (whatsappIds && whatsappIds.length > 0) { | ||||
|         whatsappIds = whatsappIds.map((e: any) => `${e.id}`); | ||||
|         // whatsappIds = whatsappIds.map((e: any) => `${e.id}`);
 | ||||
| 
 | ||||
|         console.log( | ||||
|           "whatsappIds whatsappIds whatsappIds whatsappIds whatsappIds: ", | ||||
|  |  | |||
|  | @ -43,7 +43,7 @@ | |||
|     "yup": "^0.32.8" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "start": "react-scripts start", | ||||
|     "start": "PORT=3331 react-scripts start", | ||||
|     "build": "react-scripts build", | ||||
|     "test": "react-scripts test", | ||||
|     "eject": "react-scripts eject" | ||||
|  |  | |||
|  | @ -6,4 +6,4 @@ app.use(express.static(path.join(__dirname, "build"))); | |||
| app.get("/*", function (req, res) { | ||||
| 	res.sendFile(path.join(__dirname, "build", "index.html")); | ||||
| }); | ||||
| app.listen(3333); | ||||
| app.listen(3331); | ||||
|  |  | |||
|  | @ -450,16 +450,16 @@ const MessagesList = ({ ticketId, isGroup }) => { | |||
| 
 | ||||
|     socket.on("connect", onConnectMessagesList) | ||||
| 
 | ||||
|     onAppMessageMessagesList = (data) => { | ||||
|     const onAppMessageMessagesList = (data) => { | ||||
| 
 | ||||
|       if (data.action === "create" && data.ticket.id === ticketId) { | ||||
|       if (data.action === "create") { | ||||
| 
 | ||||
|         dispatch({ type: "ADD_MESSAGE", payload: data.message }) | ||||
| 
 | ||||
|         scrollToBottom() | ||||
|       } | ||||
| 
 | ||||
|       if (data.action === "update" && data.ticket.id === ticketId) { | ||||
|       if (data.action === "update") { | ||||
|         dispatch({ type: "UPDATE_MESSAGE", payload: data.message }) | ||||
|       } | ||||
|     } | ||||
|  | @ -960,4 +960,4 @@ const MessagesList = ({ ticketId, isGroup }) => { | |||
|   ) | ||||
| } | ||||
| 
 | ||||
| export default MessagesList | ||||
| export default MessagesList | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import axios from "axios"; | ||||
| 
 | ||||
| const api = axios.create({ | ||||
| 	baseURL: process.env.REACT_APP_BACKEND_URL, | ||||
| 	baseURL: process.env.REACT_APP_BACKEND_URL + "/api", | ||||
| 	withCredentials: true, | ||||
| }); | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,4 +3,11 @@ import { io } from 'socket.io-client'; | |||
| // "undefined" means the URL will be computed from the `window.location` object
 | ||||
| const URL = process.env.REACT_APP_BACKEND_URL | ||||
| 
 | ||||
| export const socket = io(URL); | ||||
| export const socket = io(URL, { | ||||
|     path: "/api-ws/socketio", | ||||
|     withCredentials: true, | ||||
|     extraHeaders: { | ||||
|         "my-custom-header": "abcd" | ||||
|     }, | ||||
|     // transports: ['websocket',  'polling']
 | ||||
| }); | ||||
		Loading…
	
		Reference in New Issue