need signalR polling for asp.net mvc



任何一种灵魂都可以指导我如何在现有的MVC项目中使用SignalR进行实时的调查数据,我将非常感谢。示例代码:

[控制器]

private ApplicationDbContext db = new ApplicationDbContext();
public PartialViewResult Chat(string people) // <---need to send real time data to partial
    {
            var model = new MessageVM()
            {      
                sender = User.Identity.Name;,              
                messageList = db.messages.Where(x => x.receiver == people).ToList().Take(30)
            };
            return PartialView("_chat", model);
    }

[view]

@Ajax.ActionLink(item.name, "Chat", new { people = item.name }, new AjaxOptions() 
{ HttpMethod = "GET", UpdateTargetId = "divChat", InsertionMode = InsertionMode.Replace })
<div id="divChat"></div>  // <---this area need real-time messages data from controller.

首先在客户端的JS中创建您的SignalR连接。类似:

    function signalrconnection() {
    $.connection.hub.url = "http://localhost:54321/signalr";
    chat = $.connection.myHub;

    if (chat != undefined) {
        $.connection.hub.start()
        .done(function () {
            chat.server.send("client", "Statustasking for status");
            chat = $.connection.myHub;
        })
        .fail(function () { NoLTConnectionAlert(); });
    }
    else {
           ///do something.
        }
    }
    return chat;
}

然后将Signalr调用添加到您的JS中的$(document).ready(function ())中:

    $(document).ready(function () {
    chat = signalrconnection();
    intervalstatus = setInterval(checkstatus, 1000);
    // Create a function that the hub can call to broadcast messages.
    chat.client.addMessage = function (name, message) {}
}

在您的控制器中,您应该有一个用于集线器和方法的类,例如:

     public class MyHub : Hub
    {
        public void Send(string name, string message)
        {
          Clients.Caller.addMessage("parameter", reply);
        }
    }

然后,您应该再次处理JS中的Clients.Caller.addMessage以更新<div id="divChat"></div>

最新更新