【发布时间】:2011-06-28 15:09:18
【问题描述】:
是否已经为 jQuery 编写了通知库?一种提供类似于 StackOverflow 的方式的下拉消息。
正在寻找的东西:
1) 每隔几秒轮询一次(也许可以选择 Comet)
2) 有一个标记为已读的调用(注意到 StackOverflow 通过 POST 请求执行此操作)
【问题讨论】:
标签: jquery notifications comet long-polling
是否已经为 jQuery 编写了通知库?一种提供类似于 StackOverflow 的方式的下拉消息。
正在寻找的东西:
1) 每隔几秒轮询一次(也许可以选择 Comet)
2) 有一个标记为已读的调用(注意到 StackOverflow 通过 POST 请求执行此操作)
【问题讨论】:
标签: jquery notifications comet long-polling
为什么需要图书馆?
客户端
<script>
setInterval(function(){
$.getScript({url:"news.php"});
}, 10000);
</script>
服务器端
<?php
$data = newdata();
if ($data)
{
echo "alert('new data avaible');";
}
?>
按钮标记为已读:
服务器端
<?php
mark_as_read($_GET['id']);
客户端
<script>
function mark_as_read(markID){
$.ajax({"url": "mark_as_read.php?id="+markID"});
}
</script>
【讨论】:
看看Socket.IO。它在服务器端使用 Node-js,但您可以单独使用 javascript-client socket.io.js。
它会选择浏览器中可用的最佳transport,并根据事件系统为您提供nice api。
在 wiki 中的 different programming languages 中还有一个服务器实现列表。
【讨论】:
这个问题已经有一段时间了,但为了将来参考,请查看 http://pinesframework.org/pnotify/ 的 Pines 通知。
如果您使用的是 .NET,请查看 SignalR 以及 http://signalr.net/。
Pines Notify 为您提供基于 javascript 的弹出式通知。您可以使用 jQueryUI 或 BootStrap 为弹出窗口设置主题,并且可以提供阻塞或非阻塞通知。
SignalR 处理通信方面。它非常灵活且使用起来非常简单。它允许您从 .NET 调用 javascript 方法,以及从 javascript 调用 .NET 方法。
把它们放在一起,你就得到了一个非常棒的通知包。
【讨论】:
我不知道。无论如何,一半的工作都需要在服务器端完成。我在http://www.strategynerd.com/sngames 使用 JQuery/Asp.NETC# 制作了一个 MUD
它显示了一个基本的轮询方法。由于它使用实时通信,因此它会快速轮询,但您越不活跃,轮询开始的速度就越慢。不过,彗星和长轮询显然比这种方法要好得多。
【讨论】: