Hello, I’m developing application which uses websockets for chatting feature.

I was wondering what is best way to store all client handles in server side. Every tutorial (eg. this) just says to store in some form of map. I figured that in large commercial apps list of clients would be rather high and I wondered if storing it on heap is actually valid implementation or if some other solutions like caching dbs like redis are used.

What’s your experience with that?

  • RonSijm
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    1 year ago

    Don’t think the size really matters… an IP is 4 bytes, and the port another byte, plus lets say 4 bytes for the UserId. So with some overhead, you can practically put about 100k addresses in 1 MB.

    With that many addresses, you should probably be more concerned about the lookup than the storage. I’d probably put then in a Dictionary[UserId, SocketData].

    Websockets don’t usually stay alive for long periods, so there’s not much point of storing them in a database. Unless you’re building something serverless, but then I wouldn’t build something myself, but just use Firebase Cloud Messaging instead