Compare commits
5 Commits
aaf608d2d2
...
a7eee835b8
Author | SHA1 | Date |
---|---|---|
|
a7eee835b8 | 2 years ago |
|
bef3d2fc94 | 2 years ago |
|
aa95400309 | 2 years ago |
|
f6627d3d26 | 2 years ago |
|
c95a7e4c58 | 2 years ago |
@ -0,0 +1,92 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8" /> |
||||
<title>Знакомство с aiohttp</title> |
||||
<style> |
||||
html { |
||||
font-family: Verdana, "sans-serif"; |
||||
} |
||||
|
||||
body { |
||||
min-height: 100vh; |
||||
background: linear-gradient( |
||||
90deg, |
||||
rgba(2, 0, 36, 1) 0%, |
||||
rgba(9, 9, 121, 1) 35%, |
||||
rgba(0, 212, 255, 1) 100% |
||||
); |
||||
} |
||||
h1, |
||||
p { |
||||
color: white; |
||||
} |
||||
.time_block, |
||||
.output_block { |
||||
border: 2px solid white; |
||||
border-radius: 5px; |
||||
margin: 10px; |
||||
padding: 10px; |
||||
height: 50px; |
||||
width: 300px; |
||||
} |
||||
.message_form { |
||||
margin: 10px; |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<header> |
||||
<h1>Дата и время</h1> |
||||
</header> |
||||
<main> |
||||
<div class="time_block"> |
||||
<p id="time"></p> |
||||
</div> |
||||
<div class="message_form"> |
||||
<form id="myForm2"> |
||||
<input |
||||
type="text" |
||||
name="message_text_user" |
||||
placeholder="Введите текст" |
||||
/> |
||||
<input type="button" name="submit_message" value="Отправить" /> |
||||
</form> |
||||
</div> |
||||
<div class="output_block"> |
||||
<p id="output_message" class="output"></p> |
||||
</div> |
||||
</main> |
||||
<script> |
||||
const messageTime = document.getElementById("time"); |
||||
const messageInput = document.querySelector("[name=message_text_user]"); |
||||
const messageOtput = document.getElementById("output_message"); |
||||
const sendMessage = document.querySelector("[name=submit_message]"); |
||||
let websocketClient = new WebSocket("ws://127.0.0.1:8080/ws"); |
||||
websocketClient.onopen = () => { |
||||
console.log("Client connected!"); |
||||
sendMessage.onclick = () => { |
||||
console.log("1"); |
||||
websocketClient.send(messageInput.value); |
||||
messageInput.value = ""; |
||||
}; |
||||
}; |
||||
|
||||
websocketClient.onmessage = (message) => { |
||||
if (message.data.includes("Время: ")) { |
||||
if (typeof messageTime.textContent !== "undefined") { |
||||
messageTime.textContent = message.data; |
||||
} else { |
||||
messageTime.innerText = message.data; |
||||
} |
||||
} else { |
||||
if (typeof messageOtput.textContent !== "undefined") { |
||||
messageOtput.textContent = message.data; |
||||
} else { |
||||
messageOtput.innerText = message.data; |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
</body> |
||||
</html> |
@ -1 +1,2 @@ |
||||
from . import frontend |
||||
|
||||
|
@ -1,16 +1,51 @@ |
||||
import aiohttp |
||||
|
||||
from aiohttp import WSMsgType |
||||
from aiohttp.web_response import Response |
||||
from aiohttp.web_ws import WebSocketResponse |
||||
from aiohttp_jinja2 import template |
||||
import time |
||||
import asyncio |
||||
|
||||
|
||||
async def time_response(ws: WebSocketResponse, delay: int = 60): |
||||
while True: |
||||
new_time: time.gmtime = time.gmtime(time.time()) |
||||
time_response = f'Время: {new_time.tm_hour + 3}:{new_time.tm_min} Задержка: {delay}' |
||||
try: |
||||
await ws.send_str(time_response) |
||||
await asyncio.sleep(delay) |
||||
except ConnectionResetError: |
||||
await asyncio.sleep(delay) |
||||
@template('index.html') |
||||
async def index(request): |
||||
return {} |
||||
|
||||
@template('index_2.html') |
||||
async def index_2(request): |
||||
return {} |
||||
|
||||
|
||||
async def websocket_handler(request): |
||||
ws: WebSocketResponse = WebSocketResponse() |
||||
await ws.prepare(request) |
||||
asyncio.create_task(time_response(ws)) |
||||
async for msg in ws: |
||||
|
||||
if msg.type == aiohttp.WSMsgType.TEXT: |
||||
|
||||
if msg.data == 'close': |
||||
await ws.close() |
||||
else: |
||||
await ws.send_str(f'Вы послали: {msg.data}') |
||||
elif msg.type == WSMsgType.ERROR: |
||||
print('ws connection closed with exception %s' % |
||||
ws.exception()) |
||||
|
||||
print('websocket connection closed') |
||||
|
||||
return ws |
||||
async def button_clicked(request): |
||||
data = await request.post() |
||||
text = data.get('text') |
||||
response_text = f'Вы ввели: {text}' |
||||
print(response_text) |
||||
return aiohttp.web.Response(text=response_text) |
||||
return Response(text=response_text) |
Loading…
Reference in new issue