-
Notifications
You must be signed in to change notification settings - Fork 84
Closed
Description
Hi Elad,
I found the reconnector will not be triggered when there is no OnError parameter in the subscription process .
public IWampRealmProxy Start(Dictionary<string, Action<IDictionary<string, ISerializedValue>>> subscribers)
{
var disposables = new List<IDisposable>();
Reconnector = new WampChannelReconnector(_channel, async () =>
{
await _channel.Open().ConfigureAwait(false);
disposables.ForEach(d => d.Dispose());
disposables.Clear();
foreach (var sub in subscribers)
{
var disposable = _channel.RealmProxy.Services.GetSubject(sub.Key).Subscribe(x =>
{
sub.Value?.Invoke(x.ArgumentsKeywords);
});
disposables.Add(disposable);
}
});
Reconnector.Start();
return _channel.RealmProxy;
}
I have to add OnError paramter in Subscribe method for the connector to run normally.
var disposable = _channel.RealmProxy.Services.GetSubject(sub.Key).Subscribe(x =>
{
sub.Value?.Invoke(x.ArgumentsKeywords);
}, e =>
{
Console.WriteLine(e.ToString());
});
I think the reconnector should not be affected.
And it caused another problem, the reconnection will be triggered when I actively close the channel.So I have to dispose the reconnector when the channel is closed ,to avoid duplicate subscriptions.
public async Task<GoodbyeMessage> Close(string reason = WampErrors.CloseNormal)
{
Reconnector.Dispose();
return await _channel.Close(reason, new GoodbyeDetails());
}
Is original design so or my code wrong?
Thanks