CameraLiveDocker / index.mjs
awacke1's picture
Update index.mjs
9a70daf verified
raw
history blame
2.09 kB
// 🌍 Importing Necessary Modules and Libraries 🌍
import express from "express";
import 'dotenv/config.js'
import { createServer } from "http";
import { Server as SocketIOServer } from "socket.io";
import { client as GradioClient } from "@gradio/client";
import { createRequire } from 'node:module'
// πŸš€ Global Configurations πŸš€
const require = createRequire(import.meta.url);
global.EventSource = require('eventsource');
// πŸ“± Express App Setup πŸ“±
const app = express();
const httpServer = createServer(app);
app.use(express.static('public'));
// πŸ”Œ Socket.io Setup πŸ”Œ
const io = new SocketIOServer(httpServer, { /* options */ });
// πŸ›°οΈ Socket.io Connection Handler πŸ›°οΈ
io.on("connection", (socket) => {
console.log("🌐 New Socket Connection Established");
socket.on("ask_api", (clientData) => {
console.log(clientData)
console.log("πŸ” Trying to Reach API");
callGradioAPIAsync(clientData, socket)
});
});
// πŸ€– Gradio API Testing Function (Uncomment to test) πŸ€–
// async function testGradioServers(){
// try {
// const gradioTestClient = await GradioClient("https://gradio-hello-world.hf.space");
// const apiTestResult = await gradioTestClient.predict("/predict", ["John"]);
// console.log(apiTestResult);
// } catch (error) {
// console.log(error);
// }
// }
// testGradioServers();
// 🌟 Async Function to Call Gradio API 🌟
async function callGradioAPIAsync(clientData, socket) {
const gradioClient = await GradioClient("fffiloni/mndrm-call");
try {
const apiResult = await gradioClient.predict("/infer", [
clientData[0], // blob in 'image' Image component
clientData[1], // string in 'Question' Textbox component
]);
console.log(apiResult)
socket.emit("api_response", (apiResult.data))
} catch (error) {
console.log(error)
socket.emit("api_error", ("ERROR ON API SIDE, SORRY..."))
}
}
// πŸƒ Server Startup πŸƒ
httpServer.listen(7860);
console.log("πŸš€ App Running on http://localhost:7860");