permitio / fastapi_websocket_pubsub

A fast and durable Pub/Sub channel over Websockets. FastAPI + WebSockets + PubSub == ⚡ 💪 ❤️

Home Page:https://permit.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Is there a detailed tutorial on "websocket"?

hgalytoby opened this issue · comments

Sorry, my native language is not English, my English is poor, if communication is not good I will close issues.

I found the websocket example from #41

Before I found this example, it was not clear that the message should be sent after connecting.

Subscribe Msg

{
   request:  {
       method: "subscribe",
       "arguments": {
       "topics": ["event"]
       }
   }
}

I understand that I can receive messages by sending Subscribe Msg.

I understand sending messages to topics using Python.

endpoint = PubSubEndpoint(broadcaster="redis://localhost:6379")
await endpoint.publish(['event'], {'msg': 'ok'})

How can I send a message to a topic from Web JS?

Do you have any examples or documentation to look at?

I have a few questions

1.I want to send a message to Event topic?

let ws = new WebSocket("ws://localhost:8080/pubsub")
ws.send(JSON.stringify(????))

2.After the web receives a message once, there are no more messages.

import asyncio
from fastapi_websocket_pubsub import PubSubEndpoint


async def main():
    endpoint = PubSubEndpoint(broadcaster='redis://localhost:6379')
    while True:
        await endpoint.publish(["event"], data={'msg': 'hello web'})
        await asyncio.sleep(1)


if __name__ == '__main__':
    asyncio.run(main())

But the web can receive the trigger message.

async def events():
    await endpoint.publish(['event'], {"msg": "fastapi"})


@app.get('/trigger')
async def trigger_events():
    asyncio.create_task(events())

image