using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using WebSockets.Server; using System.Diagnostics; using WebSocketsCmd.Client; using WebSocketsCmd.Properties; using WebSockets.Client; using System.Threading.Tasks; using WebSockets.Common; using System.Threading; using WebSockets; using WebSockets.Events; using WebSocketsCmd.Server; using System.IO; namespace WebSocketsCmd { public class Program { private static void TestClient(object state) { var logger = (IWebSocketLogger) state; using (var client = new ChatWebSocketClient(true, logger)) { Uri uri = new Uri("ws://localhost/chat"); client.TextFrame += Client_TextFrame; client.ConnectionOpened += Client_ConnectionOpened; // test the open handshake client.OpenBlocking(uri); } Trace.TraceInformation("Client finished, press any key"); Console.ReadKey(); } private static void Client_ConnectionOpened(object sender, EventArgs e) { Trace.TraceInformation("Client: Connection Opened"); var client = (ChatWebSocketClient) sender; // test sending a message to the server client.Send("Hi"); } private static void Client_TextFrame(object sender, TextFrameEventArgs e) { Trace.TraceInformation("Client: {0}", e.Text); var client = (ChatWebSocketClient) sender; // lets test the close handshake client.Dispose(); } private static void Main(string[] args) { IWebSocketLogger logger = new WebSocketLogger(); try { int port = Settings.Default.Port; string webRoot = Settings.Default.WebRoot; if (!Directory.Exists(webRoot)) { string baseFolder = AppDomain.CurrentDomain.BaseDirectory; logger.Warning(typeof(Program), "Webroot folder {0} not found. Using application base directory: {1}", webRoot, baseFolder); webRoot = baseFolder; } // used to decide what to do with incoming connections ServiceFactory serviceFactory = new ServiceFactory(webRoot, logger); using (WebServer server = new WebServer(serviceFactory, logger)) { server.Listen(port); Thread clientThread = new Thread(new ParameterizedThreadStart(TestClient)); clientThread.IsBackground = false; clientThread.Start(logger); Console.ReadKey(); } } catch (Exception ex) { logger.Error(typeof(Program), ex); Console.ReadKey(); } } } }