Removed the configuration with an App.config file from the HttpServer class
This commit is contained in:
parent
998a296d18
commit
cd7dfea62d
@ -49,6 +49,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.cs" />
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using WebSocketSharp;
|
||||
using WebSocketSharp.Net;
|
||||
using WebSocketSharp.Server;
|
||||
@ -15,7 +16,7 @@ namespace Example3
|
||||
#if DEBUG
|
||||
_httpsv.Log.Level = LogLevel.TRACE;
|
||||
#endif
|
||||
//_httpsv.RootPath = "../../Public";
|
||||
_httpsv.RootPath = ConfigurationManager.AppSettings ["RootPath"];
|
||||
//_httpsv.Sweeping = false;
|
||||
_httpsv.AddWebSocketService<Echo> ("/Echo");
|
||||
_httpsv.AddWebSocketService<Chat> ("/Chat");
|
||||
@ -36,7 +37,7 @@ namespace Example3
|
||||
Console.WriteLine (" {0}", path);
|
||||
Console.WriteLine ();
|
||||
|
||||
Console.WriteLine("Press enter key to stop server...");
|
||||
Console.WriteLine ("Press enter key to stop the server...");
|
||||
Console.ReadLine ();
|
||||
|
||||
_httpsv.Stop ();
|
||||
|
@ -28,38 +28,21 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using WebSocketSharp.Net;
|
||||
|
||||
namespace WebSocketSharp.Server {
|
||||
|
||||
namespace WebSocketSharp.Server
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides a simple HTTP server that allows to accept the WebSocket connection requests.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The HttpServer instance can provide the multi WebSocket services.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <para>
|
||||
/// The HttpServer instance can set the document root path of server using
|
||||
/// the application configuration file or <see cref="RootPath"/> property.
|
||||
/// </para>
|
||||
/// <code lang="xml">
|
||||
/// <?xml version="1.0" encoding="utf-8"?>
|
||||
/// <configuration>
|
||||
/// <appSettings>
|
||||
/// <add key="RootPath" value="./Public" />
|
||||
/// </appSettings>
|
||||
/// </configuration>
|
||||
/// </code>
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public class HttpServer {
|
||||
|
||||
public class HttpServer
|
||||
{
|
||||
#region Private Fields
|
||||
|
||||
private HttpListener _listener;
|
||||
@ -118,7 +101,7 @@ namespace WebSocketSharp.Server {
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The default logging level is the <see cref="LogLevel.ERROR"/>.
|
||||
/// If you wanted to change the current logging level, you would set the <c>Log.Level</c> property
|
||||
/// If you want to change the current logging level, you set the <c>Log.Level</c> property
|
||||
/// to one of the <see cref="LogLevel"/> values which you want.
|
||||
/// </remarks>
|
||||
/// <value>
|
||||
@ -146,9 +129,8 @@ namespace WebSocketSharp.Server {
|
||||
/// Gets or sets the document root path of server.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// An <see cref="string"/> that contains the document root path of server.
|
||||
/// The default value is set from the application configuration file if is available;
|
||||
/// otherwise, <c>./Public</c>.
|
||||
/// A <see cref="string"/> that contains the document root path of server.
|
||||
/// The default value is <c>./Public</c>.
|
||||
/// </value>
|
||||
public string RootPath {
|
||||
get {
|
||||
@ -259,7 +241,7 @@ namespace WebSocketSharp.Server {
|
||||
_listener = new HttpListener ();
|
||||
_listening = false;
|
||||
_logger = new Logger ();
|
||||
_rootPath = getRootPath();
|
||||
_rootPath = "./Public";
|
||||
_svcHosts = new ServiceHostManager ();
|
||||
|
||||
_windows = false;
|
||||
@ -267,25 +249,10 @@ namespace WebSocketSharp.Server {
|
||||
if (os.Platform != PlatformID.Unix && os.Platform != PlatformID.MacOSX)
|
||||
_windows = true;
|
||||
|
||||
var prefix = String.Format(
|
||||
"http{0}://*:{1}/", _port == 443 ? "s" : String.Empty, _port);
|
||||
var prefix = String.Format ("http{0}://*:{1}/", _port == 443 ? "s" : "", _port);
|
||||
_listener.Prefixes.Add (prefix);
|
||||
}
|
||||
|
||||
private static string getRootPath()
|
||||
{
|
||||
string rootPath = null;
|
||||
try {
|
||||
rootPath = ConfigurationManager.AppSettings["RootPath"];
|
||||
}
|
||||
catch {
|
||||
}
|
||||
|
||||
return rootPath.IsNullOrEmpty()
|
||||
? "./Public"
|
||||
: rootPath;
|
||||
}
|
||||
|
||||
private void processHttpRequest (HttpListenerContext context)
|
||||
{
|
||||
var eventArgs = new HttpRequestEventArgs (context);
|
||||
@ -367,10 +334,9 @@ namespace WebSocketSharp.Server {
|
||||
|
||||
private void processRequestAsync (HttpListenerContext context)
|
||||
{
|
||||
WaitCallback callback = (state) =>
|
||||
{
|
||||
try
|
||||
WaitCallback callback = state =>
|
||||
{
|
||||
try {
|
||||
if (context.Request.IsUpgradeTo ("websocket"))
|
||||
{
|
||||
if (processWebSocketRequest (context))
|
||||
@ -383,8 +349,7 @@ namespace WebSocketSharp.Server {
|
||||
|
||||
context.Response.Close ();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
catch (Exception ex) {
|
||||
_logger.Fatal (ex.Message);
|
||||
error ("An exception has occured.");
|
||||
}
|
||||
@ -397,17 +362,14 @@ namespace WebSocketSharp.Server {
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
try {
|
||||
processRequestAsync (_listener.GetContext ());
|
||||
}
|
||||
catch (HttpListenerException)
|
||||
{
|
||||
// HttpListener has been closed.
|
||||
catch (HttpListenerException) {
|
||||
_logger.Info ("HttpListener has been stopped.");
|
||||
break;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
catch (Exception ex) {
|
||||
_logger.Fatal (ex.Message);
|
||||
error ("An exception has occured.");
|
||||
|
||||
@ -428,7 +390,7 @@ namespace WebSocketSharp.Server {
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Adds the specified type WebSocket service.
|
||||
/// Adds the specified typed WebSocket service.
|
||||
/// </summary>
|
||||
/// <param name="absPath">
|
||||
/// A <see cref="string"/> that contains an absolute path associated with the WebSocket service.
|
||||
|
@ -59,7 +59,6 @@
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Configuration" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user