Skip to content

Commit 051ac01

Browse files
committed
Stability improvement
1 parent 6b0cc2f commit 051ac01

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

Diff for: PoloniexApi.Net/LiveTools/Live.cs

+40
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.Tasks;
55
using System.Web;
66
using WampSharp.V2;
7+
using WampSharp.V2.Realm;
78

89
namespace Jojatekok.PoloniexAPI.LiveTools
910
{
@@ -31,14 +32,53 @@ public ObservableDictionary<CurrencyPair, MarketData> Tickers {
3132
public void Start()
3233
{
3334
WampChannel = new DefaultWampChannelFactory().CreateJsonChannel(Helper.ApiUrlWssBase, "realm1");
35+
WampChannel.RealmProxy.Monitor.ConnectionBroken += OnConnectionBroken;
36+
3437
WampChannelOpenTask = WampChannel.Open();
3538
}
3639

3740
public void Stop()
3841
{
42+
foreach (var subscription in ActiveSubscriptions.Values) {
43+
subscription.Dispose();
44+
}
45+
ActiveSubscriptions.Clear();
46+
3947
WampChannel.Close();
4048
}
4149

50+
private void OnConnectionBroken(object sender, WampSessionCloseEventArgs e)
51+
{
52+
if (e.CloseType != SessionCloseType.Disconnection) {
53+
var subscriptions = new string[ActiveSubscriptions.Count];
54+
var i = 0;
55+
foreach (var subjectName in ActiveSubscriptions.Keys) {
56+
subscriptions[i] = subjectName;
57+
i++;
58+
}
59+
ActiveSubscriptions.Clear();
60+
61+
// Re-initialize WampChannel
62+
Start();
63+
64+
// Re-subscribe to subjects
65+
#pragma warning disable 4014
66+
for (var j = subscriptions.Length - 1; j >= 0; j--) {
67+
var subjectName = subscriptions[j];
68+
switch (subjectName) {
69+
case SubjectNameTicker:
70+
SubscribeToTickerAsync();
71+
break;
72+
73+
case SubjectNameTrollbox:
74+
SubscribeToTrollboxAsync();
75+
break;
76+
}
77+
}
78+
#pragma warning restore 4014
79+
}
80+
}
81+
4282
public async Task SubscribeToTickerAsync()
4383
{
4484
if (!ActiveSubscriptions.ContainsKey(SubjectNameTicker)) {

Diff for: PoloniexApi.Net/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
// You can specify all the values or you can default the Build and Revision Numbers
3030
// by using the '*' as shown below:
3131
// [assembly: AssemblyVersion("1.0.*")]
32-
[assembly: AssemblyVersion("1.1.3")]
33-
[assembly: AssemblyFileVersion("1.1.3")]
32+
[assembly: AssemblyVersion("1.1.4")]
33+
[assembly: AssemblyFileVersion("1.1.4")]
3434
[assembly: NeutralResourcesLanguageAttribute("en")]

0 commit comments

Comments
 (0)