non-bidirectional messages between chats

I’m trying to achieve bidirectionality of messages, but messages from Chat B are not displayed in Chat A and I don’t understand why, if it’s a server or client side problem

from starlette.applications import Starlette
from starlette.responses import HTMLResponse
from starlette.websockets import WebSocketDisconnect
from starlette.routing import Route, WebSocketRoute, Mount
from starlette.staticfiles import StaticFiles
import base64

connected_websockets = {}

async def websocket_endpoint(websocket):
    await websocket.accept()
    connected_websockets[id(websocket)] = websocket
    try:
        while True:
            data = await websocket.receive_text()
            if data.startswith('ChatA:'):
                # Handle message from Chat A
                data = data[6:]  # Remove the prefix
                for ws_id, ws in connected_websockets.items():
                    if ws_id != id(websocket):
                        await ws.send_text(f"Received from ChatA: {data}")
            elif data.startswith('ChatB:'):
                # Handle message from Chat B
                data = data[6:]  # Remove the prefix
                for ws_id, ws in connected_websockets.items():
                    if ws_id != id(websocket):
                        await ws.send_text(f"Received from ChatB: {data}")
            elif data.startswith('data:'):
                # This is a data URL, handle it as a file
                await handle_file(data, websocket)
    except WebSocketDisconnect:
        del connected_websockets[id(websocket)]
        
async def handle_file(data_url, websocket):
    # Extract the file type and data from the URL
    file_type, data = data_url.split(';')[0].split('/')[1], data_url.split(',')[1]
    # Decode the base64 data
    file_data = base64.b64decode(data)
    # Now you can save the file data to a file, or do whatever you want with it
    with open('received.' + file_type, 'wb') as f:
        f.write(file_data)
    await websocket.send_text(f"File received: received.{file_type}")

routes = [
    WebSocketRoute("/ws", websocket_endpoint),
    Mount("/", StaticFiles(directory="static"), name="static")  # Aggiungi questa linea
]

app = Starlette(routes=routes)

client side

var socketA = new WebSocket('ws://localhost:8001/ws');
var socketB = new WebSocket('ws://localhost:8001/ws');
var fileToSend = null;

$('#form-send').submit(function(e){
    e.preventDefault();
    if (fileToSend) {
        var reader = new FileReader();
        reader.onload = function(e) {
            var contents = e.target.result;
            console.log('Sending file from ChatA: ', fileToSend.name); // Log added
            socketA.send(contents);
            $('#sent-messages').append($('<li>').text('Sent: ' + fileToSend.name));
            fileToSend = null;
        };
        reader.readAsDataURL(fileToSend);
    } else {
        var message = 'ChatA:' + $('#input-send').val();
        console.log('Sending message from ChatA: ', message); // Log added
        socketA.send(message);
        $('#sent-messages').append($('<li>').text('Sent: ' + message));
        $('#input-send').val('');
    }
});

socketA.onmessage = function(event){
    var msg = event.data;
    console.log('Received message at ChatA: ', msg); // Log added
    if (msg.startsWith('File received:')) {
        var filename = msg.split(': ')[1];
        $('#received-messages').append($('<li>').html('Received: <a href="' + filename + '" download>' + filename + '</a>'));
    } else {
        $('#received-messages').append($('<li>').text('Received: ' + msg));
    }
};

$('#form-receive').submit(function(e){
    e.preventDefault();
    var message = 'ChatB:' + $('#input-receive').val();
    console.log('Sending message from ChatB: ', message); // Log added
    socketB.send(message);
    $('#received-messages').append($('<li>').text('Sent: ' + message));
    $('#input-receive').val('');
});

socketB.onmessage = function(event){
    var msg = event.data;
    console.log('Received message at ChatB: ', msg); // Log added
    if (msg.startsWith('File received:')) {
        var filename = msg.split(': ')[1];
        $('#received-messages').append($('<li>').html('Received: <a href="' + filename + '" download>' + filename + '</a>'));
    } else {
        $('#received-messages').append($('<li>').text('Received: ' + msg));
    }
};

var dropZone = document.getElementById('sent-messages');

dropZone.addEventListener('dragover', function(e) {
    e.preventDefault();
    e.stopPropagation();
    e.dataTransfer.dropEffect = 'copy';
});

dropZone.addEventListener('drop', function(e) {
    e.preventDefault();
    e.stopPropagation();

    var files = e.dataTransfer.files;
    if (files.length > 0) {
        fileToSend = files[0];
        $('#input-send').val('File: ' + fileToSend.name);
    }
});

As you can see from the image the messages sent from chat A are displayed in chat B, but the messages sent from chat B are not displayed in chat A, but are displayed in the same chat, which is a problem

enter image description here