"Предыстория":
Задача: сделать онлайн чат.
Сделанные шаги:
1) Сделан сервер
2) Сделан клиент
Проблема:
Клиент принимает и отправляет сообщения через консоль, что неправильно, а также накладывает некоторые ограничения в возможностях
Теперь к делу:
Я нашел в интернете код для создания веб чата:
Сервер:
|
1 |
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 страница:
|
1 |
<!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 кода, написанного выше
Дополнительно:
Содержание
но я не буду делать код питона на javascript
Это как?
Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
Изменения должны производиться у всех пользователей, который зайдут на страницу?
Как мне использовать питон код в javascript коде сайта
Также как и используют TypeScript, который тоже не один браузер не поддерживает, но на котором тем не менее много кто пишет клиент - транспилировать в JavaScript.
- Спасибо!
Ответы:
1) Как мне использовать питон код в javascript коде сайта
Никак, большинство бразуеров поддерживает только JavaScript. Клиентский код придётся писать на нём.
Зато ты можешь использовать любой язык на стороне сервера - если твоя программа поддерживает нужные протоколы (HTTP + websockets), браузеру будет всё равно, на чём она написана.
2) Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
Использовать для этой цели JavaScript. JS подключается к вебсокету, Питон отдаёт данные через этот вебсокет, JS их принимает, интерпретирует как сообщения и преобразует страницу нужным образом.
-
только JavaScript. Клиентский код придётся писать на нём.
А это что?
- Rise, это интерпретатор/транспилятор для питона, написанный на JavaScript. =)
Интересно было бы посмотреть на бенчмарки этого чуда - насколько оно тормознее уже тормознутого браузерного JS.
Как мне использовать питон код в javascript коде сайта
Никак. Это не предусмотрено браузером. В среде браузера исполняется только яваскрипт.
Как я могу вносить изменения на работающую html страницу, аналогично работе javascript кода, написанного выше
Исходя из вышенаписанного - никак. Код клиентской части может быть написан только на яваскрипте.
В общем случае ПРИ ИНИЦИАЛИЗАЦИИ страницы вы можете заранее сформировать что-либо в коде самого хтмл шаблона с помощью питона, но это происходит на стороне сервера, далее загруженная с сервера в браузер страничка может оперировать только яваскриптом.
-
Код клиентской части может быть написан только на яваскрипте.
А это что?
- Rise,
In order for the Python script to be processed, all there is to do is to include brython.js.
Это эмулятор питона на жс. То есть код все равно будет на яваскрипте, просто яваскрипт будет генерироваться яваскриптом из псевдокода, что-то типа тайпскрипта короче.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для того чтобы изменять сайт на Python аналогично JavaScript коду, вам потребуется использовать фреймворк Django. Django является одним из самых популярных фреймворков для веб-разработки на Python и обладает множеством инструментов и функционала для создания динамических веб-приложений.
Прежде всего, убедитесь, что у вас установлен Django на вашем компьютере. Если его нет, вы можете установить его с помощью pip:
Затем создайте новый проект Django с помощью команды:
Перейдите в каталог проекта и создайте новое приложение:
Теперь вам нужно создать представления (views) для вашего сайта. Создайте новый файл в папке вашего приложения (myapp) и определите в нем представление, которое будет отображать вашу страницу:
Затем вам нужно настроить маршрутизацию (routing) для вашего представления. Откройте файл urls.py в папке вашего проекта и добавьте следующий код:
Теперь ваше представление будет доступно по адресу http://localhost:8000/. Запустите сервер с помощью команды:
Теперь вы можете изменять сайт на Python, аналогично тому, как это делается с помощью JavaScript кода. Django предоставляет множество инструментов для работы с шаблонами, базами данных, формами и другими аспектами веб-разработки. Не забывайте изучать документацию Django для более подробной информации о его возможностях и функционале.