this post was submitted on 08 Oct 2023
7 points (88.9% liked)

Web Development

3441 readers
2 users here now

Welcome to the web development community! This is a place to post, discuss, get help about, etc. anything related to web development

What is web development?

Web development is the process of creating websites or web applications

Rules/Guidelines

Related Communities

Wormhole

Some webdev blogsNot sure what to post in here? Want some web development related things to read?

Heres a couple blogs that have web development related content

CreditsIcon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

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?

top 3 comments
sorted by: hot top controversial new old
[–] MrPoopyButthole@lemmy.world 4 points 1 year ago

Don't overthink it. 100mb of RAM will get you something like half a million clients.

[–] RonSijm@programming.dev 3 points 1 year ago* (last edited 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

[–] riklaunim@programming.dev 0 points 1 year ago

Why do you want to store them? I used socket.io in one app and I used channels to manage who gets what but disconnects/reconnects would happen often so I didn't use the connection directly, but emitting messages to clients currently subscribed to a given channel.

Agents log into the dashboard - connect and the server subscribes them to the "agents" channel to which ticket list items messages are emitted. Clicks on a ticket - that's a ticket_id unique channel to which he gets subscribed. Any disconnect/reconnect would create a new connection, the old one is dropped and the agent is once again subscribed to these channels based on where in the dashboard he is in.