【问题标题】:How to develop stack overflow like notification system如何开发类似通知系统的堆栈溢出
【发布时间】:2014-03-16 10:38:08
【问题描述】:

stack over site 有很好的通知系统。当我们发布任何问题并坚持到该页面时,同时如果有人给出答案或发表任何评论或编辑我的问题或其他问题,那么我们点击并加载数据的地方就会出现一条通知消息。

这是图片

1)这种通知可以由signalR开发

2) 我们可以编写 JQuery 函数,该函数将在后台运行每个部分并访问服务器以检查问题是否有任何答案或检查是否存在任何现有问题更改或检查是否有任何 cmets 等(如果有)找到活动,然后在页面上显示一条消息,请求用户加载更改。

但我不知道堆栈溢出是如何开发这个通知系统的? 所以我正在寻找为任何网站开发类似通知系统的最佳指导。

谢谢

编辑

public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.sendMessage(name,message);
    }
}

code in global.asax
protected void Application_Start(object sender,EventArgs e)
{
    RouteTable.Routes.MapHubs();
}

client code

<script src="http://code.jquery.com/jquery-1.8.2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-1.0.1.min.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        // Proxy created on the fly          
        var chat = $.connection.chatHub;

        // Get the user name and store it to prepend to messages.
        $('#displayname').val(prompt('Enter your name:', ''));

        // Declare a function on the chat hub so the server can invoke it          
        chat.client.sendMessage = function (name, message) {
            var encodedName = $('<div />').text(name).html();
            var encodedMsg = $('<div />').text(message).html();
            $('#messages').append('<li>' + encodedName + 
                ':  ' + encodedMsg + '</li>');
        };

        // Start the connection
        $.connection.hub.start().done(function () {
            $("#send").click(function () {
                // Call the chat method on the server
                chat.server.send($('#displayname').val(), $('#msg').val());
            });
        });
    });
</script>

嗨@Anders 感谢您的指导,您要求我使用您的库,但是当我转到该页面时,我发现没有可靠的代码需要放入我的页面中。通常,当我们使用 signalr 时,我们编写了上面的代码。一侧是集线器,另一侧是客户端,但我不明白我需要编写什么来实现您的代码,而且我想知道您的代码还将提供什么。

所以请详细指导我。谢谢

【问题讨论】:

  • 每秒运行 jquery 来访问服务器并不是每个部分的好主意。
  • 所以请详细指导我什么是最好的方法?

标签: jquery asp.net-mvc-3 notifications signalr


【解决方案1】:

这个想法很简单,使用 pub/sub 将更新推送到客户端。实际上,开发这样一个功能丰富的实时 CMS 需要时间。轻松开始并随时添加功能。

不要轮询,改用 SignalR,我的问题是 Stackoverflow 使用某种 CQRS 域。在读取模型存储中,您可以将更改推送到消息总线,然后将它们转发给客户端。

您可以查看我的事件聚合器代理以获取 signalR,

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

在客户端我会使用 Knockout 或 SignalR,但请记住,如果您希望 SEO 正常工作,您也需要在服务器上呈现内容

【讨论】:

  • 您说得对,我们可以使用信号器将更改推送到页面。我知道信号器,但不知道如何根据我的要求使用它,即当有人回答问题时,通知将发送给该​​页面上的所有其他用户。如果您详细解释如何向该页面上的每个人广播通知,将会有所帮助。谢谢
  • 如果你使用我的库,你可以添加一个约束,那么监听器将只获取该特定实体的更新,github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/…
  • 如果你决定使用 vanilla signalr,那么你可以自己开发类似的东西
  • 请查看演示,了解如何使用它从服务器发布和在客户端监听。 github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/…
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2011-02-17
  • 2010-11-14
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多