radu-matei / websocket-manager

Real-Time library for ASP .NET Core
https://radu-matei.com/blog/real-time-aspnet-core/
MIT License
452 stars 183 forks source link

Chat Rooms #21

Open chemitaxis opened 7 years ago

chemitaxis commented 7 years ago

Hi, one question... Can I manage a Chat Room with this library? Is possible? Thanks!

radu-matei commented 7 years ago

Hi!

At this moment it is not possible, you would need something like groups, which are not implemented right now. If you are interested in contributing, we can surely work together on this feature.

Thanks!

chemitaxis commented 7 years ago

Thanks @radu-matei I will try to work on it... ;)

radu-matei commented 7 years ago

Let's keep this open and discuss what you would like to implement here :)

radu-matei commented 7 years ago

Do you have something specific in mind to start with?

chemitaxis commented 7 years ago

Hi @radu-matei, not in this moment... We are migrating our App to ASP.NET Core, and in this moment we are researching about all our requirements... ;)

radu-matei commented 7 years ago

Ok, then what would you need specifically from the library?

tanwarsatya commented 7 years ago

One functionality in particular we need is ability to filter the message based on parameter to different clients. For ex:

  1. Assume multiple clients are connected which belong to different ogranization, they pass orgid when they registerfor websocket message.
  2. Only messages which are sent for an organization should be sent to the client which are registered based on the orgid

Is this possible ? Thx

Regards Satya

RobSchoenaker commented 7 years ago

I created a pull request that should allow for filtering connections based on anything. Find it here: https://github.com/radu-matei/websocket-manager/pull/32/commits

It also allows for adding properties and speeds up sending messages.

miker1423 commented 7 years ago

Hello! I will try to implement chat rooms, any ideas about how should it be?? I thought of a concurrent dictionary. The dictionary would have the ID of the chat room as the key and a list of connection IDs.

dotrung commented 7 years ago

Hi,

Should we instantiate one SocketManager per room, so each room has its own _sockets Dictionary? Are we having one SocketManager during application lifetime? Are we having one SocketHandler per client request?

miker1423 commented 7 years ago

Hi @dotrung! answering you questions 1.- No, you only need one SocketManager. 2.- You should have just one during life time. 3.- AFAIK, no, you only have one socket handler that will be instantiated by the middleware.

dotrung commented 7 years ago

Hi @miker1423

  1. Does it have affect to the scalability?
  2. After reading the issues/39, I though we only have one SocketManager for application lifetime. Actually we have multiple SocketManager, one per SocketHandler, which in turn has application lifetime. Thus, SocketManager has application lifetime.
  3. Is this issue solved? I see the middleware has Group feature.
  4. Should an endpoint a group? Sockets are being grouped by endpoint, and then in each group, they splitted into smaller groups.