【发布时间】:2014-07-13 02:20:48
【问题描述】:
我正在尝试将 SignalR 实现到一个简单的 MVC 5 项目中。我已经通过this tutorial 工作过,它可以工作,但我现在正试图从一个单独的控制器调用一个集线器方法。
我有一个名为 Generate.cshtml 的视图,带有这个标记和 Javascript:
<script type="text/javascript">
$(function() {
var myHub = $.connection.ContosoChatHub;
myHub.client.writeMessageToScreen = function(message) {
$('#messages').append(message);
};
});
</script>
<input type="text" id="msg" />
<input type="button" id="broadcast" value="broadcast" />
<ul id="messages" class="round">
</ul>
中心类是
[HubName("ContosoChatHub")]
public class ContosoChatHub : Hub
{
public void NewContosoChatMessage(string message)
{
Clients.All.NewMessage(message);
}
}
然后在我的控制器中,我想调用 writeMessageToScreen 方法——可以直接调用它,也可以通过集线器类调用。
我读过我可以直接调用 Javascript 方法
public ActionResult Generate()
{
var context = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub>();
context.Clients.All.writeMessageToScreen("Test");
return View();
}
但这不起作用,并且没有任何内容写入屏幕。它也没有抛出任何错误,它只是没有做任何事情。
有人知道发生了什么吗?有没有更好的方法从 Controller 调用 Hub 方法?
【问题讨论】:
-
我没有看到对
$.connection.hub.start()的任何呼叫。有吗? SignalR Hubs API Guide - JavaScript Client
标签: c# javascript asp.net-mvc signalr asp.net-mvc-5