Используя каналы django с вебсокетами (React + django), я получаю ошибку при отправке сообщения изнутри useEffect в react

Ошибка заключается в том, что websocket все еще находится на стадии подключения. Вот сообщение об ошибке в консоли

Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
    at websocket__WEBPACK_IMPORTED_MODULE_1__.client.onmessage

Это код внутри эффекта использования:

useEffect(() => {
websocket.onmessage = (e) => {
        const dataReceived = JSON.parse(e.data)
}
if(dataReceived['Message'] == 'Hello'){

               websocket.send(JSON.stringify({
                State: 'Message Hello Received',
                toSendBack: 'Hi',
              }))
}
},[]}

Как вы видите, я использую условие if для проверки того, что если сообщение, отправленное с бэкенда, является 'Hello', я отправляю сообщение изнутри use effect в react, которое говорит 'hi'.

вот подход, который я использовал раньше:

const [chatSocket, setChatSocket] = useState(false)

useEffect(() => {
        if (!chatSocket) {
            newChatSocket()
        }
}, [])

const newChatSocket = () => {
    setChatSocket(new WebSocket(
        'websocket_url'
    ))
}

if (chatSocket) {
    chatSocket.onmessage = function (e) {
        // do something
    };

    chatSocket.onclose = function (e) {
        console.error('Chat socket closed unexpectedly');
    };
}
Вернуться на верх