0

我尝试使用 mvc 4 索引视图显示信号 r 一些文本。我在索引页面上没有收到任何消息。

集线器代码

 public class TasksHub : Hub
{
    public void NewTaskDetails(int taskid,string taskname,string created,string role)
    {
        Clients.All.addMessage(taskid, taskname, created, role);
 } }

控制器

var context = GlobalHost.ConnectionManager.GetHubContext<TaskManager.Hubs.TasksHub>();
context.Clients.All.addMessage
(tasklist.Taskid,tasklist.Taskname,tasklist.createdby,tasklist.Role);

看法

<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-1.0.0-alpha1.min.js"></script>
<script src="~/SignalR/Hubs"></script>
<script type="text/javascript">
$(function () {
    var THub = $.connection.TaskHub;
    $messages = $("#messages");
    myHub.client.send = function (taskid, taskname, created, role) {
        $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
    }

    $.connection.hub.start();
});



</script>
<div id="messages">
</div>
4

1 回答 1

0

首先下线:

 myHub.client.send = function (taskid, taskname, created, role) {
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
}

需要是:

 THub.client.send = function (taskid, taskname, created, role) {
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
}

什么是 myHub 你没有声明那个变量?

在上面的第二行中,您定义了集线器可以调用以将消息发送到客户端的函数。您将该函数称为“发送”,但在集线器端您调用的是“addMessage”

第三,您需要定义一些将执行集线器方法调用的客户端操作。我的意思是什么触发了 hub 方法的调用?您需要在 $.connection.hub.start() 中添加一些逻辑,例如:

 $('#someElement').click(function () {
    // Declare taskid, taskname, created, role.
    THub.server.NewTaskDetails(taskid, taskname, created, role);
 }
于 2013-05-13T14:52:17.807 回答