Не найдено: /socket.io/ с помощью Django и React

Мне нужно установить сокетное соединение между фронтендом React и бэкендом Django.

socketio.js Сокет-клиент в React

import { io } from 'socket.io-client';

URL = 'http://127.0.0.1:8000/prices';

export const socket = io.connect(URL, {
    cors: {
        origin: 'http://127.0.0.1:8000',
        credentials: true,
    }
});

socketio.py Сокет-сервер в Django

from threading import Thread
import socketio

sio = socketio.AsyncServer(async_mode='asgi', logger=True, engineio_logger=True, cors_allowed_origins='*')

thread = Thread()
URL = '' //Empty for now

def getPrices():
    print("Fetching Data")
    while True:
        data = requests.get(URL)
        data = data.json()
        data = data['stockList']
        socketio.emit('stocks', {'data': data}, namespace='/prices')
        socketio.sleep(60)

@sio.on('connect', namespace='/prices')
def connect():
    global thread
    print('Client connected')
    if not thread.is_alive():
        print("Starting Thread")
        thread = socketio.start_background_task(getPrices)

@sio.on('disconnect', namespace='/prices')
def disconnect():
    print('Client disconnected')

asgi.py server

import os

from django.core.asgi import get_asgi_application

import socketio
from main.socketio import sio

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_asgi_application()

SocketApplication = socketio.ASGIApp(sio, application)

Я использовал Uvicorn в качестве ASGI веб-сервера и добавил Uvicorn в INSTALLED_APPS в settings.py, а также добавил ASGI_APPLICATION = 'myproject.asgi.application'

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