Страница не найдена на Django с использованием Websockets

Я впервые работаю с вебсокетами в Django, и у меня не очень хорошо получается, я получаю либо ошибку 404 not found, либо ошибку: unexpected server response: 200, я проверял некоторые учебники, а также читал документацию, и некоторые говорят, что нужно использовать TypeScript, но я не очень понимаю, почему

Цель

Моя цель состоит в том, чтобы иметь возможность сделать запрос к Electron, чтобы он мог взять принт-скрин экрана вашего пользователя и отправить его мне в виде строки, чтобы я мог манипулировать им в Django Python, эта часть уже функционирует, я протестировал ее с Simple WebSockets Client, но теперь, когда я пытаюсь протестировать с другими пользователями и получить их скриншот, и для этого я использую ngrok, чтобы держать сервер поднятым для других пользователей, чтобы получить доступ. Происходит так, что я захватываю свой электронный сервер, а не других пользователей, и теперь я пытаюсь изменить Routes, чтобы захватить их, но у меня ничего не получается, если кто-нибудь может помочь, очень прошу

index.js

const { desktopCapturer, screen, BrowserWindow, app } = require('electron');
const { spawn } = require('child_process');
const django = spawn('python', ['manage.py', 'runserver']);
const wss = new WebSocket.Server({ port: 8000 });

wss.on('connection', ws => {
    ws.on('message', message => {
        console.log('Mensagem recebida:', message.toString());
        if (message.toString() === 'screenshot_requested') {
            captureScreenshots(ws);
        }
    });
});


function createWindow() {
    // Create the browser window
    const mainWindow = new BrowserWindow({
        title: 'SketchPixel Facial Recognition',
        width: 1920,
        height: 1680,
        icon: 'templates/static/assets/sketchpixel_logo.jpg'
    });

    // Carregar a URL do aplicativo
    const appUrl = 'https://35f8-2001-8a0-ff62-e300-d469-e0a-17a0-b9bd.ngrok-free.app/';
    mainWindow.loadURL(appUrl);

    // Definir a janela para ser fullscreen
}

django.stdout.on('data', (data) => {  
    console.log(`stdout: ${data}`);
  }
);
django.stderr.on('data', (data) => {
    console.error(`stderr: ${data}`);
  }
);
django.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
  }
);

Consumers.py

 from channels.generic.websocket import AsyncWebsocketConsumer
    import json
    
    class ScreenshotConsumer(AsyncWebsocketConsumer):
        async def connect(self):
            await self.accept()
    
        async def disconnect(self, close_code):
            pass
    
        async def receive(self, text_data):
            text_data_json = json.loads(text_data)
            message = text_data_json['message']
    
            await self.send(text_data=json.dumps({
                'message': message
            }))

   ## Routing.py ##

    from django.urls import re_path
    
    from . import consumers
    
    websocket_urlpatterns = [
        re_path(r'ws/main/', consumers.ScreenshotConsumer.as_asgi()),
    ]

views.py

def call_node_script(request): #Função para chamar o script Node.js

    print("Solicitando captura de tela...")
    ws = websocket.create_connection('wss://35f8-2001-8a0-ff62-e300-d469-e0a-17a0-b9bd.ngrok-free.app/ws/main/') 
    print("Conexão WebSocket estabelecida com sucesso.")
    ws.send('screenshot_requested')
    # Receber a resposta do servidor
    result = ws.recv()
    ws.close()
    print("Resposta Recebida com sucesso.")
    return result

asgi.py

 import os
    from django.core.asgi import get_asgi_application
    from channels.routing import ProtocolTypeRouter, URLRouter
    from channels.auth import AuthMiddlewareStack
    from django.urls import re_path
    from main import consumers
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'facial.settings')
    
    websocket_urlpatterns = [
        re_path(r'ws/screenshot/', consumers.ScreenshotConsumer.as_asgi()),
    ]
    
    application = ProtocolTypeRouter({
        "http": get_asgi_application(),
        "websocket": AuthMiddlewareStack(
            URLRouter(
                websocket_urlpatterns
            )
        ),
        # Just HTTP for now. (We can add other protocols later.)
    })

Терминал Джанго

Handshake status 200 OK -+-+-

Handshake status 404 Not Found -+-+-

Электрон

update Required
Вернуться на верх