本文整理汇总了C#中IConnection.OnReceived方法的典型用法代码示例。如果您正苦于以下问题:C# IConnection.OnReceived方法的具体用法?C# IConnection.OnReceived怎么用?C# IConnection.OnReceived使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IConnection
的用法示例。
在下文中一共展示了IConnection.OnReceived方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Send
public override Task Send(IConnection connection, string data, string connectionData)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
string url = UrlBuilder.BuildSend(connection, Name, connectionData);
var postData = new Dictionary<string, string> { { "data", data } };
return HttpClient.Post(url, connection.PrepareRequest, postData, isLongRunning: false)
.Then(response => response.ReadAsString())
.Then(raw =>
{
if (!String.IsNullOrEmpty(raw))
{
connection.Trace(TraceLevels.Messages, "OnMessage({0})", raw);
connection.OnReceived(connection.JsonDeserializeObject<JObject>(raw));
}
})
.Catch(connection.OnError, connection);
}
示例2: Send
public Task Send(IConnection connection, string data, string connectionData)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
string url = connection.Url + "send";
string customQueryString = String.IsNullOrEmpty(connection.QueryString) ? String.Empty : "&" + connection.QueryString;
url += String.Format(CultureInfo.InvariantCulture,
_sendQueryString,
_transport,
connectionData,
Uri.EscapeDataString(connection.ConnectionToken),
customQueryString);
var postData = new Dictionary<string, string> {
{ "data", data }
};
return _httpClient.Post(url, connection.PrepareRequest, postData, isLongRunning: false)
.Then(response => response.ReadAsString())
.Then(raw =>
{
if (!String.IsNullOrEmpty(raw))
{
connection.Trace(TraceLevels.Messages, "OnMessage({0})", raw);
connection.OnReceived(JObject.Parse(raw));
}
})
.Catch(connection.OnError);
}
示例3: Send
public Task Send(IConnection connection, string data)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
string url = connection.Url + "send";
string customQueryString = String.IsNullOrEmpty(connection.QueryString) ? String.Empty : "&" + connection.QueryString;
url += String.Format(CultureInfo.InvariantCulture, _sendQueryString, _transport, connection.ConnectionId, customQueryString);
var postData = new Dictionary<string, string> {
{ "data", data }
};
return _httpClient.Post(url, connection.PrepareRequest, postData)
.Then(response =>
{
string raw = response.ReadAsString();
if (!String.IsNullOrEmpty(raw))
{
connection.OnReceived(JObject.Parse(raw));
}
})
.Catch(connection.OnError);
}
示例4: ProcessResponse
public static void ProcessResponse(IConnection connection, string response, out bool shouldReconnect, out bool disconnected, Action onInitialized)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
connection.MarkLastMessage();
shouldReconnect = false;
disconnected = false;
if (String.IsNullOrEmpty(response))
{
return;
}
try
{
var result = JValue.Parse(response);
if (!result.HasValues)
{
return;
}
if (result["I"] != null)
{
connection.OnReceived(result);
return;
}
shouldReconnect = (int?)result["T"] == 1;
disconnected = (int?)result["D"] == 1;
if (disconnected)
{
return;
}
UpdateGroups(connection, groupsToken: result["G"]);
var messages = result["M"] as JArray;
if (messages != null)
{
connection.MessageId = (string)result["C"];
foreach (JToken message in (IEnumerable<JToken>)messages)
{
connection.OnReceived(message);
}
TryInitialize(result, onInitialized);
}
}
catch (Exception ex)
{
connection.OnError(ex);
}
}
示例5: ProcessResponse
public static void ProcessResponse(IConnection connection, string response, out bool timedOut, out bool disconnected)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
timedOut = false;
disconnected = false;
if (String.IsNullOrEmpty(response))
{
return;
}
try
{
var result = JValue.Parse(response);
if (!result.HasValues)
{
return;
}
if (result["I"] != null)
{
connection.OnReceived(result);
return;
}
timedOut = result.Value<int>("T") == 1;
disconnected = result.Value<int>("D") == 1;
if (disconnected)
{
return;
}
UpdateGroups(connection, groupsToken: result["G"]);
var messages = result["M"] as JArray;
if (messages != null)
{
foreach (JToken message in messages)
{
try
{
connection.OnReceived(message);
}
catch (Exception ex)
{
#if NET35
Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Failed to process message: {0}", ex));
#else
Debug.WriteLine("Failed to process message: {0}", ex);
#endif
connection.OnError(ex);
}
}
connection.MessageId = result["C"].Value<string>();
}
}
catch (Exception ex)
{
#if NET35
Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Failed to response: {0}", ex));
#else
Debug.WriteLine("Failed to response: {0}", ex);
#endif
connection.OnError(ex);
}
}
示例6: ProcessResponse
// virtual to allow mocking
protected internal virtual bool ProcessResponse(IConnection connection, string response)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
if (_initializationHandler == null)
{
throw new InvalidOperationException(Resources.Error_ProcessResponseBeforeStart);
}
connection.MarkLastMessage();
if (String.IsNullOrEmpty(response))
{
return false;
}
var shouldReconnect = false;
try
{
var result = connection.JsonDeserializeObject<JObject>(response);
if (!result.HasValues)
{
return false;
}
if (result["I"] != null)
{
connection.OnReceived(result);
return false;
}
shouldReconnect = (int?)result["T"] == 1;
var groupsToken = result["G"];
if (groupsToken != null)
{
connection.GroupsToken = (string)groupsToken;
}
var messages = result["M"] as JArray;
if (messages != null)
{
connection.MessageId = (string)result["C"];
foreach (JToken message in (IEnumerable<JToken>)messages)
{
connection.OnReceived(message);
}
if ((int?)result["S"] == 1)
{
_initializationHandler.InitReceived();
}
}
}
catch (Exception ex)
{
connection.OnError(ex);
}
return shouldReconnect;
}
示例7: ProcessResponse
public static void ProcessResponse(IConnection connection, string response, out bool timedOut,
out bool disconnected)
{
timedOut = false;
disconnected = false;
Debug.WriteLine("ProcessResponse: " + response);
if (String.IsNullOrEmpty(response))
return;
if (connection.MessageId == null)
connection.MessageId = null;
try
{
var result = JToken.Parse(response);
Debug.WriteLine("ProcessResponse: result parsed");
if (!result.HasValues)
return;
timedOut = result.Value<bool>("TimedOut");
disconnected = result.Value<bool>("Disconnect");
if (disconnected)
return;
var messages = result["M"] as JArray;
if (messages != null)
{
foreach (var message in messages)
{
try
{
Debug.WriteLine("ProcessResponse: before invoking OnReceived");
connection.OnReceived(message);
}
catch (Exception ex)
{
Debug.WriteLine("ProcessResponse: exception in OnReceived event '" + ex.Message + "'.");
connection.OnError(ex);
}
}
connection.MessageId = result["C"].Value<string>();
var transportData = result["T"] as JObject;
if (transportData != null)
{
var groups = (JArray) transportData["G"];
if (groups != null)
{
var groupList = new List<string>();
foreach (var groupFromTransport in groups)
{
groupList.Add(groupFromTransport.Value<string>());
}
connection.Groups = groupList;
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine(string.Format("Failed to response: {0}", ex));
connection.OnError(ex);
}
}
示例8: ProcessResponse
public static void ProcessResponse(IConnection connection, string response, out bool timedOut, out bool disconnected)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
connection.UpdateLastKeepAlive();
timedOut = false;
disconnected = false;
if (String.IsNullOrEmpty(response))
{
return;
}
try
{
var result = JValue.Parse(response);
if (!result.HasValues)
{
return;
}
if (result["I"] != null)
{
connection.OnReceived(result);
return;
}
timedOut = result.Value<int>("T") == 1;
disconnected = result.Value<int>("D") == 1;
if (disconnected)
{
return;
}
UpdateGroups(connection, groupsToken: result["G"]);
var messages = result["M"] as JArray;
if (messages != null)
{
foreach (JToken message in messages)
{
try
{
connection.OnReceived(message);
}
catch (Exception ex)
{
connection.OnError(ex);
}
}
connection.MessageId = result["C"].Value<string>();
}
}
catch (Exception ex)
{
connection.OnError(ex);
}
}