2020-02-04 08:59:58 +01:00
|
|
|
|
using System;
|
|
|
|
|
using ln.http.websocket;
|
|
|
|
|
using ln.http.exceptions;
|
|
|
|
|
using ln.logging;
|
|
|
|
|
namespace ln.http.router
|
|
|
|
|
{
|
|
|
|
|
public class WebsocketRouter : IHttpRouter
|
|
|
|
|
{
|
|
|
|
|
Func<HttpRequest, WebSocket> createWebsocket;
|
|
|
|
|
|
|
|
|
|
public WebsocketRouter(Func<HttpRequest, WebSocket> createWebsocketDelegate)
|
|
|
|
|
{
|
|
|
|
|
createWebsocket = createWebsocketDelegate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public WebSocket CreateWebSocket(HttpRequest request) => createWebsocket(request);
|
|
|
|
|
|
2020-03-03 17:13:31 +01:00
|
|
|
|
public HttpResponse Route(HttpRoutingContext routingContext, HttpRequest httpRequest)
|
2020-02-04 08:59:58 +01:00
|
|
|
|
{
|
|
|
|
|
WebSocket websocket = CreateWebSocket(httpRequest);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
websocket.Run();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Logging.Log(e);
|
|
|
|
|
}
|
|
|
|
|
throw new DisposeConnectionException();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|