Example #1
0
        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);
        }
Example #2
0
    public override AsyncReply <bool> Execute(HTTPConnection sender)
    {
        if (sender.IsWebsocketRequest())
        {
            if (Server == null)
            {
                return(new AsyncReply <bool>(false));
            }

            var tcpSocket = sender.Unassign();

            if (tcpSocket == null)
            {
                return(new AsyncReply <bool>(false));
            }

            var httpServer = sender.Parent;
            var wsSocket   = new WSocket(tcpSocket);
            httpServer.Remove(sender);

            var iipConnection = new DistributedConnection();

            Server.Add(iipConnection);
            iipConnection.Assign(wsSocket);
            wsSocket.Begin();

            return(new AsyncReply <bool>(true));
        }

        return(new AsyncReply <bool>(false));

        /*
         * 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;
         */
    }