Exemple #1
0
        public static void InvokeSpecial(this ApplicationWebService service, XElement e, Action <XElement> y)
        {
            var q = new StringBuilder();

            //q.Append("/event-stream");
            q.Append("?");

            q.Append("e=" + e.ToString());

            var s = new EventSource(q.ToString());

            s["y"] = a =>
            {
                var data = a.data.ToString()
                           .Replace("\\r", "\r")
                           .Replace("\\n", "\n");

                Console.WriteLine(new { data });

                var _y = XElement.Parse(data);

                y(_y);
            };

            s.onerror +=
                delegate
            {
                s.close();
            };
        }
        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {
            new Abstractatech.ConsoleFormPackage.Library.ConsoleForm { }.InitializeConsoleFormWriter().Show();



            page.Invoke.onclick +=
                delegate
                {
                    var now = DateTime.Now;

                    var n = new XElement("client",
                        new XAttribute("value", "" + now)
                    );

                    service.Invoke(
                        n,
                        xml =>
                        {
                            Console.WriteLine(xml.ToString());
                            //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.right);
                        }
                    );
                };

            page.InvokeSpecal.onclick +=
                delegate
                {
                    var now = DateTime.Now;

                    var n = new XElement("client",
                        new XAttribute("value", "" + now)
                    );

                    service.InvokeSpecial(
                        n,
                        xml =>
                        {
                            Console.WriteLine(xml.ToString());
                            //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.left);
                        }
                    );
                };

            page.InvokeSpecalInsideWorker.onclick +=
                delegate
                {
                    Console.WriteLine("InvokeSpecalInsideWorker");

                    var ww = new Worker(
                       worker =>
                       {
                           // running in worker context. cannot talk to outer scope yet.

                           worker.RedirectConsoleOutput();
                           Console.WriteLine("at worker");


                           var now = DateTime.Now;

                           var n = "<client  value='now' />";


                           var xservice = new ApplicationWebService();

                           Console.WriteLine("before InvokeSpecialString");
                           xservice.InvokeSpecialString(
                               n,
                               xml =>
                               {
                                   Console.WriteLine("at InvokeSpecialString");

                                   Console.WriteLine(xml);
                                   //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.left);
                               }
                           );
                       }
                   );


                    ww.onmessage +=
                        e =>
                        {
                            Console.Write("" + e.data);
                        };
                };



            page.Clear.onclick +=
                delegate
                {
                    // Error	1	The call is ambiguous between the following methods or properties: 
                    // 'ScriptCoreLib.JavaScript.Extensions.INodeExtensions.Clear(ScriptCoreLib.JavaScript.DOM.INode)' and
                    // 'ScriptCoreLib.JavaScript.Extensions.INodeExtensions.Clear(ScriptCoreLib.JavaScript.DOM.INode)'	X:\jsc.svn\examples\javascript\EventSourceForWebServiceYield\EventSourceForWebServiceYield\Application.cs	71	21	EventSourceForWebServiceYield


                    //page.left.Clear();
                    //page.right.Clear();
                };
        }
        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {
            new Abstractatech.ConsoleFormPackage.Library.ConsoleForm {
            }.InitializeConsoleFormWriter().Show();



            page.Invoke.onclick +=
                delegate
            {
                var now = DateTime.Now;

                var n = new XElement("client",
                                     new XAttribute("value", "" + now)
                                     );

                service.Invoke(
                    n,
                    xml =>
                {
                    Console.WriteLine(xml.ToString());
                    //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.right);
                }
                    );
            };

            page.InvokeSpecal.onclick +=
                delegate
            {
                var now = DateTime.Now;

                var n = new XElement("client",
                                     new XAttribute("value", "" + now)
                                     );

                service.InvokeSpecial(
                    n,
                    xml =>
                {
                    Console.WriteLine(xml.ToString());
                    //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.left);
                }
                    );
            };

            page.InvokeSpecalInsideWorker.onclick +=
                delegate
            {
                Console.WriteLine("InvokeSpecalInsideWorker");

                var ww = new Worker(
                    worker =>
                {
                    // running in worker context. cannot talk to outer scope yet.

                    worker.RedirectConsoleOutput();
                    Console.WriteLine("at worker");


                    var now = DateTime.Now;

                    var n = "<client  value='now' />";


                    var xservice = new ApplicationWebService();

                    Console.WriteLine("before InvokeSpecialString");
                    xservice.InvokeSpecialString(
                        n,
                        xml =>
                    {
                        Console.WriteLine("at InvokeSpecialString");

                        Console.WriteLine(xml);
                        //new IHTMLPre { innerText = xml.ToString() }.AttachTo(page.left);
                    }
                        );
                }
                    );


                ww.onmessage +=
                    e =>
                {
                    Console.Write("" + e.data);
                };
            };



            page.Clear.onclick +=
                delegate
            {
                // Error	1	The call is ambiguous between the following methods or properties:
                // 'ScriptCoreLib.JavaScript.Extensions.INodeExtensions.Clear(ScriptCoreLib.JavaScript.DOM.INode)' and
                // 'ScriptCoreLib.JavaScript.Extensions.INodeExtensions.Clear(ScriptCoreLib.JavaScript.DOM.INode)'	X:\jsc.svn\examples\javascript\EventSourceForWebServiceYield\EventSourceForWebServiceYield\Application.cs	71	21	EventSourceForWebServiceYield


                //page.left.Clear();
                //page.right.Clear();
            };
        }