Fix due to the modified HttpServer.cs

master
sta 13 years ago
parent d0e5ae3979
commit 8e2a1ee1b3

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -16,9 +16,9 @@ namespace Example3
{ {
_httpsv = new HttpServer<Echo>(4649); _httpsv = new HttpServer<Echo>(4649);
_httpsv.OnResponse += (sender, e) => _httpsv.OnGet += (sender, e) =>
{ {
onResponse(e.Context); onGet(e.Request, e.Response);
}; };
_httpsv.OnError += (sender, e) => _httpsv.OnError += (sender, e) =>
@ -54,19 +54,5 @@ namespace Example3
response.StatusCode = (int)HttpStatusCode.NotFound; response.StatusCode = (int)HttpStatusCode.NotFound;
} }
private static void onResponse(HttpListenerContext context)
{
var req = context.Request;
var res = context.Response;
if (req.HttpMethod == "GET")
{
onGet(req, res);
return;
}
res.StatusCode = (int)HttpStatusCode.MethodNotAllowed;
}
} }
} }

Binary file not shown.

Binary file not shown.

@ -67,6 +67,7 @@ namespace WebSocketSharp
{ {
if (value < 0) if (value < 0)
throw new ArgumentOutOfRangeException("value"); throw new ArgumentOutOfRangeException("value");
byte b = (byte)value; byte b = (byte)value;
dest.Add(b); dest.Add(b);
return b == Convert.ToByte(c); return b == Convert.ToByte(c);

@ -67,9 +67,9 @@ namespace WebSocketSharp.Server {
var prefix = String.Format( var prefix = String.Format(
"http{0}://*:{1}/", _port == 443 ? "s" : String.Empty, _port); "http{0}://*:{1}/", _port == 443 ? "s" : String.Empty, _port);
_listener.Prefixes.Add(prefix); _listener.Prefixes.Add(prefix);
_rootPath = ConfigurationManager.AppSettings["RootPath"];
_wsPath = wsPath.ToUri(); _wsPath = wsPath.ToUri();
_wsServer = new WebSocketServer<T>(); _wsServer = new WebSocketServer<T>();
configureFromConfigFile();
} }
#endregion #endregion
@ -84,8 +84,16 @@ namespace WebSocketSharp.Server {
#region Events #region Events
public event EventHandler<ResponseEventArgs> OnConnect;
public event EventHandler<ResponseEventArgs> OnDelete;
public event EventHandler<ErrorEventArgs> OnError; 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 #endregion
@ -113,23 +121,25 @@ namespace WebSocketSharp.Server {
} }
} }
private void configureFromConfigFile()
{
_rootPath = ConfigurationManager.AppSettings["RootPath"];
}
private void respond(HttpListenerContext context) private void respond(HttpListenerContext context)
{ {
WaitCallback respondCb = (state) => WaitCallback respondCb = (state) =>
{ {
try try
{ {
var req = context.Request; if (context.Request.IsWebSocketRequest)
var res = context.Response;
if (req.IsWebSocketRequest)
{ {
upgradeToWebSocket(context); upgradeToWebSocket(context);
} }
else else
{ {
OnResponse.Emit(this, new ResponseEventArgs(context)); respondToClient(context);
res.Close(); context.Response.Close();
} }
} }
catch (Exception ex) catch (Exception ex)
@ -140,6 +150,69 @@ namespace WebSocketSharp.Server {
ThreadPool.QueueUserWorkItem(respondCb); 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() private void startAcceptRequestThread()
{ {
_acceptRequestThread = new Thread(new ThreadStart(acceptRequest)); _acceptRequestThread = new Thread(new ThreadStart(acceptRequest));

@ -33,11 +33,13 @@ namespace WebSocketSharp.Server {
public class ResponseEventArgs : EventArgs 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) public ResponseEventArgs(HttpListenerContext context)
{ {
Context = context; Request = context.Request;
Response = context.Response;
} }
} }
} }

@ -677,9 +677,9 @@ namespace WebSocketSharp
{ {
close(CloseStatusCode.TOO_BIG, ex.Message); close(CloseStatusCode.TOO_BIG, ex.Message);
} }
catch (Exception ex) catch (Exception)
{ {
close(CloseStatusCode.ABNORMAL, ex.Message); close(CloseStatusCode.ABNORMAL, "An exception has been raised.");
} }
} }
@ -1075,7 +1075,7 @@ namespace WebSocketSharp
catch (Exception ex) catch (Exception ex)
{ {
error(ex.Message); error(ex.Message);
close(CloseStatusCode.HANDSHAKE_FAILURE, ex.Message); close(CloseStatusCode.HANDSHAKE_FAILURE, "An exception has been raised.");
} }
} }

@ -38,7 +38,7 @@ namespace WebSocketSharp
static WsReceivedTooBigMessageException() static WsReceivedTooBigMessageException()
{ {
_defaultMessage = String.Format( _defaultMessage = String.Format(
"Client received a payload data bigger than the allowable value({0} bytes).", PayloadData.MaxLength); "Size of received payload data is bigger than the allowable value({0} bytes).", PayloadData.MaxLength);
} }
public WsReceivedTooBigMessageException() public WsReceivedTooBigMessageException()

Loading…
Cancel
Save