Как я могу создать websocket JSObject в brython?


Поэтому я пытаюсь использовать websockets в brython, javascript-реализации python3. К сожалению, мне не очень везет.

Согласно документации, функция JSObject () может использоваться для управления объектами JS в brython, но мне не повезло с этим в websockets. Я пытаюсь протестировать его с помощью echoserver: http://www.websocket.org/echo.html (который отлично работает, когда я использую код javascript).

Ни ws = JSObject(WebSocket("ws://echo.websocket.org/")), ни ws = JSObject(new WebSocket("ws://echo.websocket.org/")), по-видимому, не работа.

Я нашел файл py_websocket.js как часть загрузки "зеркала сайта" brython, но все еще не смог его реализовать.

Я не уверен, что это просто не реализовано, или если я упускаю жизненно важную концепцию в использовании brython'S JSObject().

1 3

1 ответ:

Вот пример использования встроенной функции websocket(), включенной в py_websocket, и сервера echo.websocket.org :

<html>
<head>
<meta charset="iso-8859-1">
<script src="/src/brython.js"></script>

<script type="text/python3">
def on_open():
    # Web Socket is connected, send data using send()
    data = doc["data"].value
    if data:
        ws.send(data)
        alert("Message is sent")

def on_message(evt):
    # message received from server
    alert("Message received : %s" %evt.data)

def on_close(evt):
    # websocket is closed
    alert("Connection is closed")

ws = None
def _test():
    global ws
    # open a web socket
    ws = websocket("wss://echo.websocket.org")
    # attach functions to web sockets events
    ws.on_open = on_open
    ws.on_message = on_message
    ws.on_close= on_close

def close_connection():
    ws.close()
</script>
</head>
<body onload="brython(1)">
<input id="data">
<button onclick="_test()">Run WebSocket</button>
<p><button onclick="close_connection()">Close connection</button>
</body>
</html>

Код должен быть понятным. Сайт Brython должен быть дополнен дополнительной документацией о веб-сокетах