Wie sende ich Nachrichten vom server zum client mit SignalR Hubs

Ich bin gerade erst zu erforschen, signalR und ich möchte in der Lage zum senden von Nachrichten vom server an alle clients.

Hier ist mein Hub

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SignalR;
using SignalR.Hubs;
using SignalR.Hosting.Common;
using SignalR.Hosting.AspNet;
using System.Threading.Tasks;

namespace MvcApplication1
{
    public class Chat : Hub
    {
        public void Send(String message)
        {
            //Call the addMessage methods on all clients
            Clients.addMessage(message);
        }
    }
}

Hier ist mein client-Seite

      <script type="text/javascript">

         $(function () {

             //Proxy created on the fly
             var chat = $.connection.chat;

             //Declare a function on the chat hub so the server can invoke it
             chat.addMessage = function (message) {
                 $("#messages").append("<li>" + message + "</li>");
             };

             $("#broadcast").click(function () {
                 //call the chat method on the server
                 chat.send($("#msg").val());
             });

             $.connection.hub.start();
         });
    </script>


}



<input type="text" id="msg" />
        <input type="button" id="broadcast" value="broadcast" />

        <ul id="messages" class="round">


        </ul>

Diesem funktioniert alles perfekt, ich bin in der Lage, "chat" zwischen 2 verschiedenen Browsern.

Die nächste Sache, die ich tun möchte, initiieren Sie eine Nachricht vom server an alle clients.

Also versuchte ich diese.

 using SignalR;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System;
using System.Web.Routing;
using SignalR;
using SignalR.Hubs;

namespace MvcApplication1
{
    //Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    //visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {            
            var aTimer = new System.Timers.Timer(1000);

            aTimer.Elapsed += aTimer_Elapsed;
            aTimer.Interval = 3000;
            aTimer.Enabled = true;

            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }

        void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext<Chat>();
            context.Clients.Send("Hello");      
        }
    }
}

Diese scheint nicht zu funktionieren. Der Timer funktioniert, Die "aTimer_Elapsed" event handeler läuft alle 3 Sekunden, aber die "Senden" - Methode auf die chat-hub wird nie ausgeführt.

Irgendwelche Ideen?

InformationsquelleAutor der Frage David Kethel | 2012-08-29

Schreibe einen Kommentar