Fix due to the modified HttpServer.cs

This commit is contained in:
sta
2012-09-11 13:21:47 +09:00
parent d0e5ae3979
commit 8e2a1ee1b3
62 changed files with 92 additions and 30 deletions

View File

@@ -67,9 +67,9 @@ namespace WebSocketSharp.Server {
var prefix = String.Format(
"http{0}://*:{1}/", _port == 443 ? "s" : String.Empty, _port);
_listener.Prefixes.Add(prefix);
_rootPath = ConfigurationManager.AppSettings["RootPath"];
_wsPath = wsPath.ToUri();
_wsServer = new WebSocketServer<T>();
configureFromConfigFile();
}
#endregion
@@ -84,8 +84,16 @@ namespace WebSocketSharp.Server {
#region Events
public event EventHandler<ResponseEventArgs> OnConnect;
public event EventHandler<ResponseEventArgs> OnDelete;
public event EventHandler<ErrorEventArgs> OnError;
public event EventHandler<ResponseEventArgs> OnResponse;
public event EventHandler<ResponseEventArgs> OnGet;
public event EventHandler<ResponseEventArgs> OnHead;
public event EventHandler<ResponseEventArgs> OnOptions;
public event EventHandler<ResponseEventArgs> OnPatch;
public event EventHandler<ResponseEventArgs> OnPost;
public event EventHandler<ResponseEventArgs> OnPut;
public event EventHandler<ResponseEventArgs> OnTrace;
#endregion
@@ -113,23 +121,25 @@ namespace WebSocketSharp.Server {
}
}
private void configureFromConfigFile()
{
_rootPath = ConfigurationManager.AppSettings["RootPath"];
}
private void respond(HttpListenerContext context)
{
WaitCallback respondCb = (state) =>
{
try
{
var req = context.Request;
var res = context.Response;
if (req.IsWebSocketRequest)
if (context.Request.IsWebSocketRequest)
{
upgradeToWebSocket(context);
}
else
{
OnResponse.Emit(this, new ResponseEventArgs(context));
res.Close();
respondToClient(context);
context.Response.Close();
}
}
catch (Exception ex)
@@ -140,6 +150,69 @@ namespace WebSocketSharp.Server {
ThreadPool.QueueUserWorkItem(respondCb);
}
private void respondToClient(HttpListenerContext context)
{
var req = context.Request;
var res = context.Response;
var eventArgs = new ResponseEventArgs(context);
if (req.HttpMethod == "GET" && OnGet != null)
{
OnGet(this, eventArgs);
return;
}
if (req.HttpMethod == "HEAD" && OnHead != null)
{
OnHead(this, eventArgs);
return;
}
if (req.HttpMethod == "POST" && OnPost != null)
{
OnPost(this, eventArgs);
return;
}
if (req.HttpMethod == "PUT" && OnPut != null)
{
OnPut(this, eventArgs);
return;
}
if (req.HttpMethod == "DELETE" && OnDelete != null)
{
OnDelete(this, eventArgs);
return;
}
if (req.HttpMethod == "OPTIONS" && OnOptions != null)
{
OnOptions(this, eventArgs);
return;
}
if (req.HttpMethod == "TRACE" && OnTrace != null)
{
OnTrace(this, eventArgs);
return;
}
if (req.HttpMethod == "CONNECT" && OnConnect != null)
{
OnConnect(this, eventArgs);
return;
}
if (req.HttpMethod == "PATCH" && OnPatch != null)
{
OnPatch(this, eventArgs);
return;
}
res.StatusCode = (int)HttpStatusCode.NotImplemented;
}
private void startAcceptRequestThread()
{
_acceptRequestThread = new Thread(new ThreadStart(acceptRequest));

View File

@@ -33,11 +33,13 @@ namespace WebSocketSharp.Server {
public class ResponseEventArgs : EventArgs
{
public HttpListenerContext Context { get; private set; }
public HttpListenerRequest Request { get; private set; }
public HttpListenerResponse Response { get; private set; }
public ResponseEventArgs(HttpListenerContext context)
{
Context = context;
Request = context.Request;
Response = context.Response;
}
}
}