From cd66578138134dc5b2c5c50169c8cdd24ea5f13f Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 25 Jan 2021 16:49:03 -0500 Subject: [PATCH] Minor changes --- app/db.py | 2 +- app/routers/websockets.py | 21 ++++++++++++++------- static/test.txt | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/db.py b/app/db.py index 7535e36..6be6d8f 100644 --- a/app/db.py +++ b/app/db.py @@ -172,7 +172,7 @@ def sql_select(sql=None, data=None, table_name=None, record_id=None, record_id_r log.info('Executing a custom SQL select with no extra data dict...') result = db.execute(sql) except Exception as e: - log.error('*** An exception happened. ***') + log.info('An exception happened. Returning False.') log.error(repr(e)) log.error('***') log.error(str(e)) diff --git a/app/routers/websockets.py b/app/routers/websockets.py index 5a162fe..ef40ac9 100644 --- a/app/routers/websockets.py +++ b/app/routers/websockets.py @@ -1,6 +1,7 @@ from fastapi import APIRouter, FastAPI, WebSocket, WebSocketDisconnect from fastapi.responses import HTMLResponse from typing import List +import aioredis, asyncio, json from ..lib_general import * from ..log import * @@ -29,8 +30,8 @@ html = """ var client_id = Date.now() document.querySelector("#ws-id").textContent = client_id; //var ws = new WebSocket(`ws://localhost:5005/ws/${client_id}`); - var ws = new WebSocket("ws://localhost:8000/ws_redis"); - //var ws = new WebSocket("ws://fastapi.localhost/ws_redis"); + var ws = new WebSocket("ws://localhost:8000/ws"); + //var ws = new WebSocket("ws://fastapi.localhost/ws"); ws.onmessage = function(event) { var messages = document.getElementById('messages') var message = document.createElement('li') @@ -40,7 +41,11 @@ html = """ }; function sendMessage(event) { var input = document.getElementById("messageText") - ws.send(input.value) + var data = { 'client_id': client_id, 'message': input.value }; + var data_json_str = JSON.stringify(data); + ws.send(data_json_str); + + //ws.send(input.value) input.value = '' event.preventDefault() } @@ -61,6 +66,7 @@ async def get(): async def websocket_endpoint(websocket: WebSocket): log.setLevel(logging.DEBUG) log.debug(locals()) + log.info('Root of ws. Waiting to accept a websocket and then the redis_connector') await websocket.accept() await redis_connector(websocket) @@ -70,6 +76,7 @@ async def redis_connector( ): log.setLevel(logging.DEBUG) log.debug(locals()) + async def consumer_handler(ws: WebSocket, r): try: while True: @@ -84,7 +91,7 @@ async def redis_connector( await r.publish("chat:c", str(data)) except WebSocketDisconnect as exc: # TODO this needs handling better - logger.error(exc) + log.error(exc) async def producer_handler(r, ws: WebSocket): (channel,) = await r.subscribe("chat:c") @@ -96,7 +103,7 @@ async def redis_connector( await ws.send_text(message.decode("utf-8")) except Exception as exc: # TODO this needs handling better - logger.error(exc) + log.error(exc) redis = await aioredis.create_redis_pool(redis_uri) @@ -105,9 +112,9 @@ async def redis_connector( done, pending = await asyncio.wait( [consumer_task, producer_task], return_when=asyncio.FIRST_COMPLETED, ) - logger.debug(f"Done task: {done}") + log.debug(f"Done task: {done}") for task in pending: - logger.debug(f"Canceling task: {task}") + log.debug(f"Canceling task: {task}") task.cancel() redis.close() await redis.wait_closed() diff --git a/static/test.txt b/static/test.txt index 8d1c8b6..16b14f5 100644 --- a/static/test.txt +++ b/static/test.txt @@ -1 +1 @@ - +test file