@TheDigitalMadness
Программист

Как изменять сайт на питоне, аналогично javascript коду сайта?

"Предыстория":
Задача: сделать онлайн чат.

Сделанные шаги:
1) Сделан сервер
2) Сделан клиент

Проблема:
Клиент принимает и отправляет сообщения через консоль, что неправильно, а также накладывает некоторые ограничения в возможностях

Теперь к делу:
Я нашел в интернете код для создания веб чата:
Сервер:
import asyncio
import websockets

USERS = set()


async def addUser(websocket):
    USERS.add(websocket)


async def removeUser(websocket):
    USERS.remove(websocket)


async def socket(websocket, path):
    await addUser(websocket)

    try:
        while True:
            message = await websocket.recv()

            await asyncio.wait([user.send(message) if user != websocket else user.send('') for user in USERS])
    finally:
        await removeUser(websocket)


start_server = websockets.serve(socket, '127.0.0.1', 5678)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

Клиент - html страница:
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>
        Работа с сокетами на python
    </title>
</head>
<body>
<div class="message"></div>
<textarea placeholder="Для отправки нажмите Enter"></textarea>
<script>
  var socket = new WebSocket("ws://localhost:5678");
  socket.onopen = function(){

    document.querySelector("textarea").addEventListener('keyup', function(e){
      if(e.keyCode === 13){
        if(this.value.trim() === ""){
          return false;
        }
        socket.send(this.value.trim());
        this.value = "";
      }

    });

  };
  socket.onerror = function(){
    console.log('Ошибка при подключении');
  };

var p = "";
  socket.onmessage = function(e){
    p = document.createElement("p");
    p.innerHTML = e.data;
    document.querySelector(".message").appendChild(p);
  };
</script>


Я конечно немного разбираюсь в javascript, но я не буду делать код питона на javascript: javascript для этого не предназначен.

Вопрос:
1) Как мне использовать питон код в javascript коде сайта
2) Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
  • Вопрос задан
  • 924 просмотра
Решения вопроса 1
@risejs
Как мне использовать питон код в javascript коде сайта

Также как и используют TypeScript, который тоже не один браузер не поддерживает, но на котором тем не менее много кто пишет клиент - транспилировать в JavaScript.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
1) Как мне использовать питон код в javascript коде сайта

Никак, большинство бразуеров поддерживает только JavaScript. Клиентский код придётся писать на нём.
Зато ты можешь использовать любой язык на стороне сервера - если твоя программа поддерживает нужные протоколы (HTTP + websockets), браузеру будет всё равно, на чём она написана.
2) Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше

Использовать для этой цели JavaScript. JS подключается к вебсокету, Питон отдаёт данные через этот вебсокет, JS их принимает, интерпретирует как сообщения и преобразует страницу нужным образом.
Ответ написан
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
Как мне использовать питон код в javascript коде сайта
Никак. Это не предусмотрено браузером. В среде браузера исполняется только яваскрипт.

Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
Исходя из вышенаписанного - никак. Код клиентской части может быть написан только на яваскрипте.

В общем случае ПРИ ИНИЦИАЛИЗАЦИИ страницы вы можете заранее сформировать что-либо в коде самого хтмл шаблона с помощью питона, но это происходит на стороне сервера, далее загруженная с сервера в браузер страничка может оперировать только яваскриптом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 09:09
1000 руб./за проект
28 апр. 2024, в 08:27
7000 руб./за проект
28 апр. 2024, в 08:18
15000 руб./за проект