What about this:
- if you detect a server disconnect, enter a "Ping" mode
- in the "ping mode", you set the client's "sendTimeout" to something very short, e.g. something like 2 secs or so, since your call to the service's Ping method should be answered almost immediately
- once your "Ping" worked successfully, you again re-create the client proxy and set the client's "sendTimeout" back to the original value (default is 1 minute - depends on what makes sense for you, 15 seconds, 30 seconds - whatever)
That way, if you're in "Ping mode", you get your responses (or timeouts) quickly and you can detect the availability of the service quickly.