1

我正在关注“从集线器外部通过集线器广播”,但我的客户端浏览器没有收到任何消息。也没有错误。就好像 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>
4

1 回答 1

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 示例并遇到同样的问题。

希望能帮助到你,

于 2013-04-04T06:27:40.487 回答