我正在关注"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>
答案 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示例并面临同样的问题。
希望它有所帮助,