Hello and a few questions!

Hello Dear @Jirenius!

Recently i started researching for a possible alternative to SignalR, which at first seemed like a good idea but later on and as the needs of the application became a more complex the workflow became a bit more tedious. Like for example i though i could use their Group system to notify/broadcast to the clients all of the changes but i quickly saw that this would not work because the clients and the administrators have multiple groups (like areas, centers etc…). I ended up creating a custom state manager for the connections and picking out which clients to notify etc. but then again the steps required to do simple tasks (event just for a login) were not justifying the cause. That said, i stumbled upon resgate today which seems to be the perfect candidate for what i’m working with!

[Question]
From what i understand so far i could just create a different channel for each “centre” and each “area” and then all of the clients/admins that have subscribed to events in that centre/area channel will be notified for any changes (magic!). This also seems to be fairly similar to how React or Flutter works by updating their content based on state changes? The question here is if i’m misunderstanding something. A simple description maybe of how resgate is better or at-least different from SignalR would be appreciated :). (Better i mean, besides the awesome performance boost you get from caching!)

[Question]
I mainly code with c# and gladly i can see there is a nugget package for the server implementation of resgate. Is there a client written in c# also?
Thank you!

[EDIT]
I think i’v found the answers to all of my questions for now!
[Q1] Sponsor @jirenius on GitHub Sponsors · GitHub
[Q2] GitHub - Shelim/ResGateClientNet: Implementation of ResGate Client in .NET Although this one doesn’t seem to be an official client, still it seems to be fully functional :+1:

[EDIT]
It seems that the ResGateClientNet apparently is not working :frowning: . I get Failed to connect due to UnsupportedVersion. @Shelim Any plans on updating/finishing thisone? Or maybe @Jirenius any plans on helping him finish it? I’m afraid i’m not experienced enough to step in on that :frowning:

Sorry for the long delay in the response (somehow the notifications has failed me :frowning: )

Hehe, well, it is different. SignalR is a pub/sub solution. You create a “Hub”, which clients connect to, and broadcast messages to all clients connected to it.

This sort of pattern is possible with Resgate as well. You create a “Resource”, which clients subscribe to, and you send (custom) events (eg. “new message”) on that resource which are broadcast to all clients subscribing to it.

But Resgate primarily handles resources, not just events. Meaning, you can create services that serve data (resources) such as “list of online users”, “messages on board ‘general’”, or “user with id 42”. The client can then get this data, and have it updated in real time with little effort.

So, if you just want a simple event stream, then there are many solutions available where SignalR is one, and Resgate another. But if you are building an API with resources, and you have an event stream that contains information on changes to the resource data (eg. “a new message was added to the top of the message board”, or “user 42 changed status to AFK”), then Resgate is made for exactly that. SignalR is not.

Yes. Or maybe a rewrite. I know others have experience the same issues with @shelim’s package. I will need to look closer to see what can be done with his code.
A company that I have a partnership with have requested this very feature as well (C# client), so it is something that will get prioritized within the coming quarter.

Best regards,
Samuel

Thank you for the answer Samuel! The notification never reached me either so I’m reading this now! I ended up using MQTT as the project I’m working with did not require as many RPC calls or updating resources in real time, it’s mostly fire and forget! I do see a lot of potential uses of resgate though for updating lists for example that need to be consistent across all clients so I will be playing around with it in the next few weeks since you’ve updated your c# libraries also :partying_face:!