本文整理汇总了C#中ITransportConnection类的典型用法代码示例。如果您正苦于以下问题:C# ITransportConnection类的具体用法?C# ITransportConnection怎么用?C# ITransportConnection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ITransportConnection类属于命名空间,在下文中一共展示了ITransportConnection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessRequest
public override Task ProcessRequest(ITransportConnection connection)
{
return _context.Request.AcceptWebSocketRequest(socket =>
{
_socket = socket;
socket.OnClose = clean =>
{
// If we performed a clean disconnect then we go through the normal disconnect routine. However,
// If we performed an unclean disconnect we want to mark the connection as "not alive" and let the
// HeartBeat clean it up. This is to maintain consistency across the transports.
if (clean)
{
OnDisconnect();
}
_isAlive = false;
};
socket.OnMessage = message =>
{
OnReceiving(message);
if (Received != null)
{
Received(message).Catch();
}
};
return ProcessRequestCore(connection);
});
}
示例2: ProcessRequest
public override Task ProcessRequest(ITransportConnection connection)
{
return _context.Request.AcceptWebSocketRequest(socket =>
{
_socket = socket;
socket.OnClose = () =>
{
OnDisconnect();
_isAlive = false;
};
socket.OnMessage = message =>
{
OnReceiving(message);
if (Received != null)
{
Received(message).Catch();
}
};
return ProcessRequestCore(connection);
});
}
示例3: ConnectionRun
public ConnectionRun(RunData runData)
: base(runData)
{
var connectionManager = new ConnectionManager(Resolver);
_context = connectionManager.GetConnectionContext<StressConnection>();
_transportConnection = (ITransportConnection)_context.Connection;
}
示例4: ProcessRequest
public override Task ProcessRequest(ITransportConnection connection)
{
if (IsAbortRequest)
{
return connection.Abort(ConnectionId);
}
else
{
var webSocketRequest = _context.Request as IWebSocketRequest;
// Throw if the server implementation doesn't support websockets
if (webSocketRequest == null)
{
throw new InvalidOperationException(Resources.Error_WebSocketsNotSupported);
}
Connection = connection;
InitializePersistentState();
return webSocketRequest.AcceptWebSocketRequest(socket =>
{
_socket = socket;
socket.OnClose = _closed;
socket.OnMessage = _message;
socket.OnError = _error;
return ProcessReceiveRequest(connection);
},
InitializeTcs.Task);
}
}
示例5: InitializeResponse
protected override Task InitializeResponse(ITransportConnection connection)
{
return base.InitializeResponse(connection)
.Then(() =>
{
Context.Response.ContentType = "text/event-stream";
return Context.Response.WriteAsync("data: initialized\n\n");
});
}
示例6: InitializeResponse
protected override Task InitializeResponse(ITransportConnection connection)
{
return base.InitializeResponse(connection)
.Then(initScript =>
{
Context.Response.ContentType = "text/html";
Context.Response.WriteAsync(initScript);
},
_initPrefix + Context.Request.QueryString["frameId"] + _initSuffix);
}
示例7: SendCommand
private static Task SendCommand(ITransportConnection connection, string connectionId, CommandType commandType)
{
var command = new Command
{
CommandType = commandType
};
var message = new ConnectionMessage(PrefixHelper.GetConnectionId(connectionId),
command);
return connection.Send(message);
}
示例8: InitializeResponse
protected override Task InitializeResponse(ITransportConnection connection)
{
return base.InitializeResponse(connection)
.Then(() =>
{
Context.Response.ContentType = "text/event-stream";
// "data: initialized\n\n"
OutputWriter.WriteLine("data: initialized");
OutputWriter.WriteLine();
OutputWriter.WriteLine();
OutputWriter.Flush();
});
}
示例9: InitializeResponse
protected override Task InitializeResponse(ITransportConnection connection)
{
return base.InitializeResponse(connection)
.Then(initScript =>
{
Context.Response.ContentType = "text/html";
return EnqueueOperation(() =>
{
OutputWriter.Write(initScript);
OutputWriter.Flush();
return Context.Response.FlushAsync();
});
},
_initPrefix + Context.Request.QueryString["frameId"] + _initSuffix);
}
示例10: ProcessRequestCore
protected async Task ProcessRequestCore(ITransportConnection connection)
{
Connection = connection;
if (IsSendRequest)
{
await ProcessSendRequest().PreserveCulture();
}
else if (IsAbortRequest)
{
await Connection.Abort(ConnectionId).PreserveCulture();
}
else
{
await InitializePersistentState().PreserveCulture();
await ProcessReceiveRequest(connection).PreserveCulture();
}
}
示例11: InitializeResponse
protected internal override Task InitializeResponse(ITransportConnection connection)
{
uint frameId;
string rawFrameId = Context.Request.QueryString["frameId"];
if (String.IsNullOrWhiteSpace(rawFrameId) || !UInt32.TryParse(rawFrameId, NumberStyles.None, CultureInfo.InvariantCulture, out frameId))
{
// Invalid frameId passed in
throw new InvalidOperationException(Resources.Error_InvalidForeverFrameId);
}
string initScript = _initPrefix +
frameId.ToString(CultureInfo.InvariantCulture) +
_initSuffix;
var context = new ForeverFrameTransportContext(this, initScript);
// Ensure delegate continues to use the C# Compiler static delegate caching optimization.
return base.InitializeResponse(connection).Then(s => Initialize(s), context);
}
示例12: ProcessRequest
public override Task ProcessRequest(ITransportConnection connection)
{
if (IsAbortRequest)
{
return connection.Abort(ConnectionId);
}
else
{
return AcceptWebSocketRequest(socket =>
{
_socket = socket;
socket.OnClose = _closed;
socket.OnMessage = _message;
socket.OnError = _error;
return ProcessRequestCore(connection);
});
}
}
示例13: ProcessRequest
public override Task ProcessRequest(ITransportConnection connection)
{
var webSocketRequest = _context.Request as IWebSocketRequest;
// Throw if the server implementation doesn't support websockets
if (webSocketRequest == null)
{
throw new InvalidOperationException(Resources.Error_WebSocketsNotSupported);
}
return webSocketRequest.AcceptWebSocketRequest(socket =>
{
_socket = socket;
socket.OnClose = clean =>
{
Trace.TraceInformation("CloseSocket({0}, {1})", clean, ConnectionId);
// If we performed a clean disconnect then we go through the normal disconnect routine. However,
// If we performed an unclean disconnect we want to mark the connection as "not alive" and let the
// HeartBeat clean it up. This is to maintain consistency across the transports.
if (clean)
{
OnDisconnect();
}
_isAlive = false;
};
socket.OnMessage = message =>
{
if (Received != null)
{
Received(message).Catch();
}
};
return ProcessRequestCore(connection);
});
}
示例14: ProcessMessages
private Task ProcessMessages(ITransportConnection connection, Func<Task> postReceive = null)
{
var tcs = new TaskCompletionSource<object>();
Action<Exception> endRequest = (ex) =>
{
if (ex != null)
{
tcs.TrySetException(ex);
}
else
{
tcs.TrySetResult(null);
}
CompleteRequest();
};
ProcessMessages(connection, postReceive, endRequest);
return tcs.Task;
}
示例15: ProcessRequestCore
protected Task ProcessRequestCore(ITransportConnection connection)
{
Connection = connection;
if (Context.Request.Url.LocalPath.EndsWith("/send"))
{
return ProcessSendRequest();
}
else if (IsAbortRequest)
{
return Connection.Abort(ConnectionId);
}
else
{
InitializePersistentState();
if (IsConnectRequest)
{
if (Connected != null)
{
// Return a task that completes when the connected event task & the receive loop task are both finished
bool newConnection = HeartBeat.AddConnection(this);
return TaskAsyncHelper.Interleave(ProcessReceiveRequestWithoutTracking, () =>
{
if (newConnection)
{
return Connected().Then(() => _counters.ConnectionsConnected.Increment());
}
return TaskAsyncHelper.Empty;
}
, connection, Completed);
}
return ProcessReceiveRequest(connection);
}
if (Reconnected != null)
{
// Return a task that completes when the reconnected event task & the receive loop task are both finished
Func<Task> reconnected = () => Reconnected().Then(() => _counters.ConnectionsReconnected.Increment());
return TaskAsyncHelper.Interleave(ProcessReceiveRequest, reconnected, connection, Completed);
}
return ProcessReceiveRequest(connection);
}
}