如何使用SignalR从服务器呼叫到客户端?

时间:2012-11-02 16:17:56

标签: signalr

我正在关注"Broadcasting over a Hub from outside of a Hub",但我的客户端浏览器没有收到任何消息。也没有错误。这就像signalR在获取hubContext并发送消息时不知道我的浏览器。

但是,从客户端到集线器呼叫时,我的集线器会按预期运行。

我的中心:

[HubName("myHub")]
public class MyHub : Hub
{        
    public void SaySomething(string message)
    {
        Clients.say(message);
    }

    public void SayHelloWorld()
    {
        Clients.say("hello world");
    }

}

来自服务器中其他地点和时间的代码:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.say(message);

我的客户端脚本:

<script src="Scripts/jquery.signalR-0.5.3.js" type="text/javascript" > </script>
<script src="signalr/hubs"> </script>   

<script type="text/javascript">
    var hub = $.connection.myHub;

    $.extend(hub, {
        Say: function(message) {
            alert(message); //this only works when the sayHelloWorld() method is executed
        }
    });

    $.connection.hub.start()
        .done(function(){
            hub.sayHelloWorld(); //this works
        });
</script>

1 个答案:

答案 0 :(得分:0)

如果您使用的是最新的nuget软件包(v 1.0.1),请尝试:

$.extend(hub.client, {
        say: function(message) {
            alert(message); //this only works when the sayHelloWorld() method is executed
        }

$.connection.hub.start()
        .done(function(){
            hub.server.sayHelloWorld(); //this works
        });

SignalR定义了集线器的客户端和服务器属性,我正在尝试视频中的MoveShape示例并面临同样的问题。

希望它有所帮助,