SlnDmry commited on
Commit
25275e4
·
verified ·
1 Parent(s): 433bffa

Update bot.js

Browse files
Files changed (1) hide show
  1. bot.js +23 -23
bot.js CHANGED
@@ -418,40 +418,40 @@ const checkAndStartViewer = (req, res, next) => {
418
  };
419
 
420
  // Geliştirilmiş Proxy Katmanı
421
- app.use('/3dview', checkAndStartViewer, createProxyMiddleware({
422
  target: 'http://localhost:3000',
423
  changeOrigin: true,
424
- ws: true,
425
  pathRewrite: {
426
- '^/3dview': '',
427
  },
428
- // CRITICAL EKLEME: ECONNREFUSED hatası alındığında uygulamanın çökmesini engeller
429
  onError: (err, req, res) => {
430
  logger.error("[Proxy Hatası] 3000 portuna bağlanılamadı: " + err.message);
431
  if (res.writeHead && !res.headersSent) {
432
  res.writeHead(502, { 'Content-Type': 'text/plain; charset=utf-8' });
433
  res.end('3D Görüntüleyici yükleniyor veya bot hazır değil. Lütfen sayfayı yenileyiniz.');
434
  }
435
- },
436
- onProxyReqWs: (proxyReq, req, socket, options, head) => {
437
- socket.on('close', () => {
438
- logger.info("[RAM Tasarrufu] Kullanıcı yayından ayrıldı. 10 saniye sonra viewer kapatılacak...");
439
-
440
- viewerTimeout = setTimeout(() => {
441
- if (viewerInstance && typeof viewerInstance.close === 'function') {
442
- try {
443
- viewerInstance.close();
444
- bot.viewer = null;
445
- viewerInstance = null;
446
- logger.info("[RAM Tasarrufu] Viewer kapatıldı, RAM serbest bırakıldı.");
447
- } catch (e) {
448
- logger.error("Viewer kapatılırken hata: " + e);
449
- }
450
- }
451
- }, 10000);
452
- });
453
  }
454
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
455
 
456
  app.listen(process.env.PORT || 7860);
457
 
 
418
  };
419
 
420
  // Geliştirilmiş Proxy Katmanı
421
+ const proxyMiddleware = createProxyMiddleware({
422
  target: 'http://localhost:3000',
423
  changeOrigin: true,
424
+ ws: true, // Websocket desteği aktif
425
  pathRewrite: {
426
+ '^/3dview': '', // /3dview ile gelen istekleri içeride temizle
427
  },
428
+ logLevel: 'debug', // Konsolda ne olup bittiğini, hatanın nereden geldiğini net görmek için
429
  onError: (err, req, res) => {
430
  logger.error("[Proxy Hatası] 3000 portuna bağlanılamadı: " + err.message);
431
  if (res.writeHead && !res.headersSent) {
432
  res.writeHead(502, { 'Content-Type': 'text/plain; charset=utf-8' });
433
  res.end('3D Görüntüleyici yükleniyor veya bot hazır değil. Lütfen sayfayı yenileyiniz.');
434
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
  }
436
+ });
437
+
438
+ // Standart HTTP istekleri için middleware'i bağlıyoruz
439
+ app.use('/3dview', checkAndStartViewer, proxyMiddleware);
440
+
441
+ // --- CRITICAL HUGGING FACE WEBSOCKET FIX ---
442
+ // Hugging Face üzerindeki Express sunucumuzu ayağa kaldırıyoruz
443
+ const server = app.listen(process.env.PORT || 7860, () => {
444
+ logger.info("Ana Express sunucusu aktif.");
445
+ });
446
+
447
+ // Hugging Face'den gelen ham Websocket isteklerini yakalayıp
448
+ // doğrudan http-proxy-middleware'in tüneline elden teslim ediyoruz.
449
+ server.on('upgrade', (req, socket, head) => {
450
+ if (req.url.startsWith('/3dview')) {
451
+ logger.info("[Proxy Websocket] Yakalanan WS bağlantısı 3000 portuna aktarılıyor: " + req.url);
452
+ proxyMiddleware.upgrade(req, socket, head);
453
+ }
454
+ });
455
 
456
  app.listen(process.env.PORT || 7860);
457