使用SignalR和实体框架

时间:2015-11-01 14:50:45

标签: asp.net-mvc entity-framework signalr

我尝试使用asp.net mvc 4EF 6建立网站,如果有任何用户向他发送任何消息,我想更新adminpanel的消息框。我使用SignalR进行实时通知,但我是SignalR的新用户,由于某些原因我无法获得更新,我还要刷新页面以获取新添加的消息。这是我的代码,

集线器类

public class ChatHub : Hub
{
    MyProj.Models.MsgToOwner messages = new MyProj.Models.MsgToOwner();

    public void SendNotify(string username, string title, string datetimeNow)
    {
        var newName = messages.name;
        var newTitle = messages.title;
        var newTime = messages.addedtime;
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
        context.Clients.All.getNotify(newName, newTitle, newTime);
    }
}

查看所有消息

@{
    var MsgList = (List<MyProj.Models.MsgToOwner>)ViewBag.MsgList;
}
<body>
    <script src="~/Scripts/jquery.signalR-1.1.4.min.js"></script>
    <script src="~/signalr/hubs"></script>
    <script src="~/Scripts/LiveScript.js"></script>
    <ul class="nav navbar-top-links navbar-right">
            <li class="dropdown">
                <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                    <i class="fa fa-envelope fa-fw"></i><i class="fa fa-caret-down"></i>
                </a>
                <ul class="dropdown-menu dropdown-messages" id="newItem">
                    @foreach (var item in MsgList)
                    {
                        <li>
                            <a href="#">
                                <div>
                                    <strong>@Html.DisplayFor(modelItem => item.title)</strong>
                                    <span class="pull-right text-muted">
                                        <em>@Html.DisplayFor(modelItem => item.addedtime)</em>
                                    </span>
                                </div>
                                <div>Sent By : <strong>@Html.DisplayFor(modelItem => item.name)</strong></div>
                            </a>
                        </li>
                        <li class="divider"></li>
                    }
                </ul>
            </li>
        </ul>
</body>

LiveScript.js(用于从SignalR更新的脚本)

$(function () {
    var chat = $.connection.chatHub;
    chat.client.getNotify = function (username, title, datetimeNow) {
        $('#newItem').append(
            '<li><a href="#"><div><strong>' + htmlEncode(title) + '</strong><span class="pull-right text-muted"><em>' + htmlEncode(datetimeNow) + '</em></span></div><div>Sent By : <strong>' + htmlEncode(username) + '</strong></div></a></li><li class="divider"></li>');
    };
    $.connection.hub.start().done(function () {
        $('#btnSend').click(function () {
            chat.server.SendNotify($('#getName').val(), $('#getTitle').val(), $('#getDate').val());
    });
});
});

我必须在这里做错事但我无法弄明白,因为我是SignalR的新手。每当在db中保存新邮件时,如何更新邮箱?任何指导对我都有帮助。感谢。

0 个答案:

没有答案