import asyncio
import threading
from kafka import KafkaConsumer
import websockets
connected = set()
async def handler(websocket, path):
connected.add(websocket)
while True:
await asyncio.sleep(1)
def start_kafka():
consumer = KafkaConsumer(
'123456789abcd_device',
bootstrap_servers="192.168.49.27" + ':9092',
)
for message in consumer:
data = f"Received message from Kafka: {message}"
print(data)
for websocket in connected:
asyncio.run_coroutine_threadsafe(websocket.send(data), loop)
def start_websocket():
global loop
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
start_server = websockets.serve(handler, "localhost", 8000)
loop.run_until_complete(start_server)
loop.run_forever()
def start_kafka_and_websocket():
t1 = threading.Thread(target=start_kafka)
t2 = threading.Thread(target=start_websocket)
t1.start()
t2.start()
t1.join()
t2.join()
start_kafka_and_websocket()