public override bool Execute(HTTPConnection sender) { if (sender.Request.Filename.StartsWith("/iip/")) { // find the service var path = sender.Request.Filename.Substring(5);// sender.Request.Query["path"]; Warehouse.Get(path).Then((r) => { if (r is DistributedServer) { var httpServer = sender.Parent; var iipServer = r as DistributedServer; var tcpSocket = sender.Unassign(); if (tcpSocket == null) { return; } var wsSocket = new WSSocket(tcpSocket); httpServer.RemoveConnection(sender); //httpServer.Connections.Remove(sender); var iipConnection = new DistributedConnection(); // iipConnection.OnReady += IipConnection_OnReady; // iipConnection.Server = iipServer; // iipConnection.Assign(wsSocket); iipServer.AddConnection(iipConnection); iipConnection.Assign(wsSocket); wsSocket.Begin(); } }); return(true); } return(false); }
public static void Main(string[] args) { WSSocket client = new WSSocket("ws://localhost:8181/EchoApplication", false); client.OnOpen += delegate() { Console.WriteLine("Connection Opened"); }; client.OnClose += delegate() { Console.WriteLine("Connection Closed"); }; client.OnMessage += delegate(string message) { Console.WriteLine("Received: " + message); }; client.Open(false); Console.WriteLine("Press Esc to exit..."); ConsoleKeyInfo key; string msg = ""; do { key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { break; } else if (key.Key == ConsoleKey.Enter) { client.Send(msg); msg = ""; } else { msg += key.KeyChar; } }while (true); }