In #87 a user was having issues using graphql-ws-client in a multithreaded environment. These issues stemmed from:
As Client::subscribe takes &mut self they needed a Arc<RwLock<Client>>, which is a bit annoying.
They want to call Client::close at some point, which takes an owned Client and it's hard to get one of those when you're sharing the client among many threads.
This fixes 1 by removing the mutability from Client::subscribe and 2 by driving Clone on Client.
If a user has cloned the Client and they call close on one instance it'll close all the others. So any future calls to Client::subscribe on those other clients will fail. Not ideal, but I think it's reasonable to expect users to handle this case if they have a need to clone the Client.
In #87 a user was having issues using graphql-ws-client in a multithreaded environment. These issues stemmed from:
Client::subscribe
takes&mut self
they needed aArc<RwLock<Client>>
, which is a bit annoying.Client::close
at some point, which takes an ownedClient
and it's hard to get one of those when you're sharing the client among many threads.This fixes 1 by removing the mutability from
Client::subscribe
and 2 by drivingClone
onClient
.If a user has cloned the
Client
and they callclose
on one instance it'll close all the others. So any future calls toClient::subscribe
on those other clients will fail. Not ideal, but I think it's reasonable to expect users to handle this case if they have a need to clone the Client.