Sre*_*nga 5 asp.net webforms signalr
我有一个带有母版页的网络应用程序,我需要向我的应用程序的所有连接用户显示警报。我使用了 Owin 启动类并映射了信号 R
然后创建一个如下所示的 Hub
namespace ArtWebApp
{
[HubName("artHub")]
public class ArtWebHub : Hub
{
public void Hello()
{
Clients.All.hello();
}
public void SayMessage()
{
this.Clients.All.showmessage();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在母版页中我添加了 Javascript,如下所示
<script src="Scripts/jquery-1.6.4.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.js"></script>
<script type="text/javascript">
$(function () {
debugger;
var connection = $.hubConnection("")
var hub = connection.createHubProxy('artHub');
hub.on('showmessage', function () {
alert('Hi');
});
connection.start().done();
//connection.start(function () {
// hub.invoke('SayMessage');
//});
});
</script>
Run Code Online (Sandbox Code Playgroud)
当从同一页面调用 Hub 方法时,这是完美的工作,但是当我尝试通过单击页面的按钮来调用该方法时,它不起作用
protected void Button1_Click(object sender, EventArgs e)
{ var hubContext = GlobalHost.ConnectionManager.GetHubContext<ArtWebApp.ArtWebHub>();
hubContext.Clients.All.SayMessage();
}
Run Code Online (Sandbox Code Playgroud)
有人可以建议我这个问题吗
我从您的代码中看到的是您正在调用的客户端函数上的错误。
Clients.All通常允许您通过调用来调用您在客户端定义的函数Clients.All.functionName()
如果Button1_Click发生请更改
hubContext.Clients.All.SayMessage();
Run Code Online (Sandbox Code Playgroud)
到
hubContext.Clients.All.showMessage();
Run Code Online (Sandbox Code Playgroud)
这是因为您正在使用dynamic集合Clients
您正在尝试调用客户端函数(该函数不存在)。
您尝试调用的方法 SayMessage 是 ArtWebHub 类的成员,无法通过调用 来调用hubContext.Clients.All。
您可以SayMessage使用从客户端调用hub.invoke('SayMessage'),但要调用showmessage客户端中定义的函数,您必须以与服务器不同的方式调用它,因为SayMessage该函数不可用于hubContext
| 归档时间: |
|
| 查看次数: |
4311 次 |
| 最近记录: |