【发布时间】:2015-06-15 02:38:21
【问题描述】:
我试图了解 WebSocketAccept 的实际作用。我知道 WebSocketAccept 是:
using WebSocketAccept =
Action
<
IDictionary<string, object>, // WebSocket Accept parameters
Func // WebSocketFunc callback
<
IDictionary<string, object>, // WebSocket environment
Task // Complete
>
>;
并以这种方式使用:
public void Configuration(IAppBuilder app)
{
app.Use(UpgradeToWebSockets);
app.UseWelcomePage();
}
// Run once per request
private Task UpgradeToWebSockets(IOwinContext context, Func<Task> next)
{
WebSocketAccept accept = context.Get<WebSocketAccept>("websocket.Accept");
if (accept == null)
{
// Not a websocket request
return next();
}
accept(null, WebSocketEcho);
return Task.FromResult<object>(null);
}
那么,accept() 实际上在做什么呢?它是否调用了 WebSocketAccept 的 Func 属性并定义了 WebSocketEcho 方法? WebSocketEcho 定义为:
private async Task WebSocketEcho(IDictionary<string, object> websocketContext)
那么 websocketContext 是从哪里来的呢?一旦我们确定它是一个 Web 套接字请求,如果我们想将它进一步传递到管道中怎么办?
【问题讨论】:
标签: c# .net sockets websocket owin