2013-12-20 27 views
0

我正在创建一个网站,在这里人们可以互相添加朋友。ASP通知机制

比如我有2个用户:

User ONE with UserID = 1 
User TWO with UserID = 2 

User One增加User Two,我写这篇文章的数据库,一个整数跟踪状态:

0 = waiting 1 = accepted (are now friends)

如果被拒绝 - >我只是从数据库中删除该记录。我想给User Two发送一个通知。

因此,User Two应该得到一个关于该User One已添加他,而不刷新页面的通知。

将某人添加为朋友后,我可以使用什么来创建通知?

我应该看看在添加记录后向网站发送内容的数据库上的某种触发器,还是有其他机制,你们推荐我?

这是一个ASPX网站,没有MVC。

我想用于消息系统的机制。

回答

1

有3种方式实现这一目标,从最简单到最复杂的:

  1. 轮询
    写网站上的每x分钟调用REST服务,并更新

    页面的DOM一个javascript
  2. 长轮询
    与轮询类似,但保持开放式连接,即时回复而无需在轮询之间等待。需要具有能够保持开放的连接池和服务器上的后台线程的API轮询数据库更改,而如果需要

  3. 网络套接字
    升级的连接必须充分地渗透到的JavaScript两种方式连接(websocket协议)。类似于长轮询服务器端。

正如你可以看到任何其他选项比1是相当复杂的,但你可以在SingalR library看看,让你开始。

+0

谢谢,最推荐的是什么? – Swag

+0

大型网站(脸书)实施所有这些,从3降级到1.如果你只有少数游客去1,如果你有负载问题向上移动。 – Sklivvz

+0

但是,如果我发送通知,并且用户点击“隐藏”通知,定时器将重新检查数据库并发送另一个通知,并且此循环将继续,对吗?因此,轮询将通过通知“垃圾”给用户 – Swag

0

您可以使用AJAX来轮询数据库中的更新,AJAX主要用于通过异步操作避免表单提交。

这里是AJAX轮询的简单jQuery例如:

function doPoll(){ 
    $.post('ajax/test.html', function(data) { 
     alert(data); // process results here 
     setTimeout(doPoll,5000); 
    }); 
} 

此外,布拉德中号评论说,可以“缓存”的“朋友”表到内存中,并调查针对它而不是DB - 它会更快。

+0

或者只是针对这些类型的事件轮询应用程序缓存(或缓存服务器)。 –

+0

他没有提到缓存,但确实可能会更快。 –