0
我是asyncio和aiohttp以及WebSockets的新手。基本上,我需要生成一個隨機字符串,每秒更改一次,並在網頁上顯示其值而不刷新。如何使用WebSocket在web瀏覽器頁面顯示來自asyncio的值
我寫了下面的代碼: app.py
import asyncio
import random
import string
from aiohttp import web
async def index(request):
return web.Response(text=periodic())
@asyncio.coroutine
def periodic():
while True:
print(''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)))
yield from asyncio.sleep(1)
def stop():
task.cancel()
task = asyncio.Task(periodic())
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(task)
except asyncio.CancelledError:
pass
但只顯示在控制檯中隨機字符串值。
main.py
from aiohttp import web
from routes import setup_routes
app = web.Application()
setup_routes(app)
web.run_app(app, host='127.0.0.1', port=8080)
routes.py
from app import index
def setup_routes(app):
app.router.add_get('/', index)
我知道我需要使用WebSockets這個任務,但不能從教程瞭解如何實現並連接所有組件。如果有人能幫助我會很高興。
如果你能接受一個「拉」的解決方案,而不是一個「推」,你不一定需要使用的WebSocket。相反,您可以使用「標準」AJAX更新您的網頁。在所有情況下,您都必須編寫一些JavaScript代碼來處理網頁上的數據接收。 – JohanL