I am trying to write an echo serverwhere instead of just a single client the mesage gets echoed to all the clients. I guess it can be called like broadcasting. Problem is I am a noob both in rust and network programming, and I have only used JS and Python untill now. So I have no idea what is it I want and what I need to do to achieve that. Any help in the right direction will be appreciated. Here’s a link to my question on Stack Overflow.
Looks like you got a good answer on SO. If you want to see how this might look like using Tokio, take a look at https://github.com/arjsin/tokio-broadcast-example.
Yep. And thanks. I have been actually avoiding tokio or any other abstractions to see if I can implement it myself.
Ok, that’s a good learning exercise . One thing I didn’t see mentioned in the SO thread is blocking. It looks like the example code there is using blocking read/write socket calls. If you broadcast a message to other threads, they won’t notice until their read/write calls return, and that’s dependent on the peer. So at a minimum, you’ll want to make the sockets use non-blocking I/O, at which point you need to maintain a state machine of read/write activity.
You can skip Tokio and use mio instead to at least get some basic non-blocking/readiness based socket abstraction. Unless you want to implement that yourself as well .
I am just taking a look at mio. Thanks. Thing is I am a noob, so I still don’t know much about the rust ecosystem.
That’s completely fine - you’ve come to the right place to get help .