Skip to content

Returning Websocket instead of void for methods which initiate listening to websockets #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Binance.API.Csharp.Client.Domain/Interfaces/IApiClient.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Binance.API.Csharp.Client.Models.Enums;
using Binance.API.Csharp.Client.Models.WebSocket;
using System.Threading.Tasks;
using WebSocketSharp;
using static Binance.API.Csharp.Client.Domain.Abstract.ApiClientAbstract;

namespace Binance.API.Csharp.Client.Domain.Interfaces
Expand All @@ -25,7 +26,7 @@ public interface IApiClient
/// <param name="parameters">Paremeters to send to the Websocket.</param>
/// <param name="messageDelegate">Deletage to callback after receive a message.</param>
/// <param name="useCustomParser">Specifies if needs to use a custom parser for the response message.</param>
void ConnectToWebSocket<T>(string parameters, MessageHandler<T> messageDelegate, bool useCustomParser = false);
WebSocket ConnectToWebSocket<T>(string parameters, MessageHandler<T> messageDelegate, bool useCustomParser = false);

/// <summary>
/// Connects to a UserData Websocket endpoint.
Expand Down
7 changes: 4 additions & 3 deletions Binance.API.Csharp.Client.Domain/Interfaces/IBinanceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using WebSocketSharp;
using static Binance.API.Csharp.Client.Domain.Abstract.ApiClientAbstract;

namespace Binance.API.Csharp.Client.Domain.Interfaces
Expand Down Expand Up @@ -215,22 +216,22 @@ public interface IBinanceClient
/// </summary>
/// <param name="symbol">Ticker symbol.</param>
/// <param name="depthHandler">Handler to be used when a message is received.</param>
void ListenDepthEndpoint(string symbol, MessageHandler<DepthMessage> messageHandler);
WebSocket ListenDepthEndpoint(string symbol, MessageHandler<DepthMessage> messageHandler);

/// <summary>
/// Listen to the Kline endpoint.
/// </summary>
/// <param name="symbol">Ticker symbol.</param>
/// <param name="interval">Time interval to retreive.</param>
/// <param name="klineHandler">Handler to be used when a message is received.</param>
void ListenKlineEndpoint(string symbol, TimeInterval interval, MessageHandler<KlineMessage> messageHandler);
WebSocket ListenKlineEndpoint(string symbol, TimeInterval interval, MessageHandler<KlineMessage> messageHandler);

/// <summary>
/// Listen to the Trades endpoint.
/// </summary>
/// <param name="symbol">Ticker symbol.</param>
/// <param name="tradeHandler">Handler to be used when a message is received.</param>
void ListenTradeEndpoint(string symbol, MessageHandler<AggregateTradeMessage> messageHandler);
WebSocket ListenTradeEndpoint(string symbol, MessageHandler<AggregateTradeMessage> messageHandler);

/// <summary>
/// Listen to the User Data endpoint.
Expand Down
3 changes: 2 additions & 1 deletion Binance.API.Csharp.Client/ApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public async Task<T> CallAsync<T>(ApiMethod method, string endpoint, bool isSign
/// <param name="parameters">Paremeters to send to the Websocket.</param>
/// <param name="messageDelegate">Deletage to callback after receive a message.</param>
/// <param name="useCustomParser">Specifies if needs to use a custom parser for the response message.</param>
public void ConnectToWebSocket<T>(string parameters, MessageHandler<T> messageHandler, bool useCustomParser = false)
public WebSocket ConnectToWebSocket<T>(string parameters, MessageHandler<T> messageHandler, bool useCustomParser = false)
{
var finalEndpoint = _webSocketEndpoint + parameters;

Expand Down Expand Up @@ -132,6 +132,7 @@ public void ConnectToWebSocket<T>(string parameters, MessageHandler<T> messageHa

ws.Connect();
_openSockets.Add(ws);
return ws;
}

/// <summary>
Expand Down
13 changes: 7 additions & 6 deletions Binance.API.Csharp.Client/BinanceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WebSocketSharp;

namespace Binance.API.Csharp.Client
{
Expand Down Expand Up @@ -563,15 +564,15 @@ public async Task<dynamic> CloseUserStream(string listenKey)
/// </summary>
/// <param name="symbol">Ticker symbol.</param>
/// <param name="depthHandler">Handler to be used when a message is received.</param>
public void ListenDepthEndpoint(string symbol, ApiClientAbstract.MessageHandler<DepthMessage> depthHandler)
public WebSocket ListenDepthEndpoint(string symbol, ApiClientAbstract.MessageHandler<DepthMessage> depthHandler)
{
if (string.IsNullOrWhiteSpace(symbol))
{
throw new ArgumentException("symbol cannot be empty. ", "symbol");
}

var param = symbol + "@depth";
_apiClient.ConnectToWebSocket(param, depthHandler, true);
return _apiClient.ConnectToWebSocket(param, depthHandler, true);
}

/// <summary>
Expand All @@ -580,31 +581,31 @@ public void ListenDepthEndpoint(string symbol, ApiClientAbstract.MessageHandler<
/// <param name="symbol">Ticker symbol.</param>
/// <param name="interval">Time interval to retreive.</param>
/// <param name="klineHandler">Handler to be used when a message is received.</param>
public void ListenKlineEndpoint(string symbol, TimeInterval interval, ApiClientAbstract.MessageHandler<KlineMessage> klineHandler)
public WebSocket ListenKlineEndpoint(string symbol, TimeInterval interval, ApiClientAbstract.MessageHandler<KlineMessage> klineHandler)
{
if (string.IsNullOrWhiteSpace(symbol))
{
throw new ArgumentException("symbol cannot be empty. ", "symbol");
}

var param = symbol + $"@kline_{interval.GetDescription()}";
_apiClient.ConnectToWebSocket(param, klineHandler);
return _apiClient.ConnectToWebSocket(param, klineHandler);
}

/// <summary>
/// Listen to the Trades endpoint.
/// </summary>
/// <param name="symbol">Ticker symbol.</param>
/// <param name="tradeHandler">Handler to be used when a message is received.</param>
public void ListenTradeEndpoint(string symbol, ApiClientAbstract.MessageHandler<AggregateTradeMessage> tradeHandler)
public WebSocket ListenTradeEndpoint(string symbol, ApiClientAbstract.MessageHandler<AggregateTradeMessage> tradeHandler)
{
if (string.IsNullOrWhiteSpace(symbol))
{
throw new ArgumentException("symbol cannot be empty. ", "symbol");
}

var param = symbol + "@aggTrade";
_apiClient.ConnectToWebSocket(param, tradeHandler);
return _apiClient.ConnectToWebSocket(param, tradeHandler);
}

/// <summary>
Expand Down