Приложение React не получает сообщения веб-сокета, когда их отправляет скрипт PythonPython

Программы на Python
Ответить
Anonymous
 Приложение React не получает сообщения веб-сокета, когда их отправляет скрипт Python

Сообщение Anonymous »

У меня настроен сервер веб-сокетов и скрипт Python, который отправляет сообщения на сервер веб-сокетов. Мое приложение-реактор должно читать эти сообщения, но оно их не получает. Когда я отправляю сообщения из приложения реагирования, оно получает ответ от сервера веб-сокетов, но только тогда.
Код сервера веб-сокетов:

Код: Выделить всё

# echo_server.py
import asyncio
import websockets
import logging

logging.basicConfig(level=logging.DEBUG)

async def echo(websocket):
async for message in websocket:
logging.debug(f"Received message: {message}")
await websocket.send(message)

async def main():
async with websockets.serve(echo, "0.0.0.0", 6789):
await asyncio.Future()  # Run forever

if __name__ == "__main__":
logging.debug("Starting WebSocket server")
asyncio.run(main())
Код скрипта Python для отправки сообщений:

Код: Выделить всё

import asyncio
import websockets

async def send_messages():
uri = "ws://3.140.79.204:6789"  # Replace with your WebSocket server URI
async with websockets.connect(uri) as websocket:
messages = ["Hello from Python!", "How are you?", "This is a test message.", "Goodbye!"]

for message in messages:
await websocket.send(message)
print(f"Sent message: {message}")
await asyncio.sleep(1)  # Wait for 1 second between messages

if __name__ == "__main__":
asyncio.run(send_messages())
Компонент React (взято прямо отсюда):

Код: Выделить всё

import React, { useState, useCallback, useEffect } from 'react';
import useWebSocket, { ReadyState } from 'react-use-websocket';

const WebsocketTesting = () => {
//Public API that will echo messages sent to it back to the client
const [socketUrl, setSocketUrl] = useState('ws://3.140.79.204:6789');
const [messageHistory, setMessageHistory] = useState([]);

const { sendMessage, lastMessage, readyState } = useWebSocket(socketUrl);

useEffect(() => {
if (lastMessage !== null) {
setMessageHistory((prev) => prev.concat(lastMessage));
}
}, [lastMessage]);

const handleClickChangeSocketUrl = useCallback(
() => setSocketUrl('wss://demos.kaazing.com/echo'),
[]
);

const handleClickSendMessage = useCallback(() => sendMessage('Hello'), []);

const connectionStatus = {
[ReadyState.CONNECTING]: 'Connecting',
[ReadyState.OPEN]: 'Open',
[ReadyState.CLOSING]: 'Closing',
[ReadyState.CLOSED]: 'Closed',
[ReadyState.UNINSTANTIATED]: 'Uninstantiated',
}[readyState];

return (


Click Me to change Socket Url


Click Me to send 'Hello'

The WebSocket is currently {connectionStatus}
{lastMessage ? Last message: {lastMessage.data} : null}
[list]
{messageHistory.map((message, idx) => (
{message ? message.data : null}
))}
[/list]

);
};

export default WebsocketTesting;
Как я уже говорил, приложение реагирования будет получать отраженные сообщения, которые оно отправляет на сервер.

введите здесь описание изображения
И сервер Python будет получать эхо-сигналы от отправляемых им сообщений

Код: Выделить всё

python3 send_messages_test.py 

Код: Выделить всё

Sent message: Hello from Python!

Код: Выделить всё

Sent message: How are you?

Код: Выделить всё

Sent message: This is a test message.

Код: Выделить всё

Sent message: Goodbye!
Но приложение реагирования не читает сообщения, которые отправляет скрипт Python, почему это?

Подробнее здесь: https://stackoverflow.com/questions/793 ... sends-them
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»