如何在asp.net网站上使用signalr作为客户端?

时间:2014-04-30 11:49:49

标签: c# asp.net signalr

Signalr通常通过集线器和连接在“服务器”端asp.net中使用。我想要完成的(如果可能的话)是使用signalr作为网站中的“客户”。 我有2个网站,一个作为服务器,另一个作为客户。

我试过这个

public void Start()
    {
        new Task(this.Listen).Start();
        //new Thread(this.Listen).Start();
    }
    private async void Listen()
    {
        try
        {
            using (var hubConnection = new HubConnection("http://localhost:8081"))
            {
                var myHub = hubConnection.CreateHubProxy("mediaHub");

                hubConnection.StateChanged += change => System.Diagnostics.Debug.WriteLine(change.OldState + " => " + change.NewState);

                myHub.On<string>(
                    "log",
                    message =>
                        System.Diagnostics.Debug.WriteLine(message + " Notified !")); 

                await hubConnection.Start();                 

            }
        }
        catch (Exception exc)
        {
             // ... 
        }
    }

服务器正在调用客户端:

        var hub = GlobalHost.ConnectionManager.GetHubContext<MediaHub>() ;
        hub.Clients.All.log("Server: " + message);

什么都没有到达客户端!

1 个答案:

答案 0 :(得分:2)

一旦您的连接准备就绪,您实际上将其丢弃,因此它不会留在身边。作为快速测试,请删除using内容并让您的hubConnection成为您班级的静态成员,并检查您是否被调用。如果你这样做,那么你可以从那里改进它,但至少你有更清楚的事情。