在asp.net MVC中调用popup作为提醒

时间:2013-10-08 15:16:30

标签: c# asp.net asp.net-mvc asp.net-mvc-4 signalr

我有一个功能,我需要在创建约会时设置的时间间隔之前提醒客户他们的约会。

示例
客户今天下午4:00 登录系统 如果客户今天下午5:00设置了预约,并且提醒分钟设置为10 这将调出一个带有beepsound的弹出窗口,该弹出窗口必须在今天下午4:50(即实际预约开始时间前10分钟)出现。
我有所有约会,其中包括存储在后端表中的开始时间,结束时间(以及日期),以供客户使用。

请指导我实时发送以下内容:
(1)在4.50PM时调用此弹出窗口 (2)播放存储在数据库中的声音文件

从我的搜索中,有一种方法可以使用mvc中的signalr概念来实现这一点。我在这个lnk中浏览了聊天应用程序示例。 http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

这会在事件发生时调用集线器。但在我的应用程序中,如果开始时间与当前时间匹配,它必须作为提示显示弹出窗口。如何实时获得这个。任何想法都可以帮助我。

3 个答案:

答案 0 :(得分:1)

这可能是使用WebSockets的好方法。 (看看Socket.IO,它是.NET版本SocketIO4Net

我们的想法是拥有一个业务逻辑服务器端来管理客户要提醒的约会。然后它使用WebSocket发送提醒信号。如果客户已登录,则js客户端将捕获信号并确定您希望如何显示该信号。

要播放存储在数据库中的声音,您可以执行返回声音文件或其他内容的动作服务器端,然后使用HTML 5标记播放声音。

希望这有帮助。

答案 1 :(得分:1)

您可以更改方法,并使用windows service电子邮件/短信用户提醒他们约会,这意味着用户不需要登录到Web应用程序以接收提醒。

如果您想使用SignalR等技术,则需要保留已连接用户(及其用户名)的记录,然后在预约到期时,您需要触发要发送到的事件相关用户,基于唯一connectionId

SignalR,开箱即用,不能像这样工作 - 但是,请在这里查看我的问题以寻求帮助:Update UI with SignalR and Knockout when manually updating DB

编辑:要添加到此,如果您正在寻找一个非常好的通知插件,那么请看看John Papa的ToastR,它是一个小型JS / Css插件通过'定时,展望风格通知'通知。

答案 2 :(得分:1)

所有事情都可以完成,但正如ChristianDev所说SignalR不能像开箱即用那样......我认为无论如何你都可以用SignalR做到这一点但是你有一些挑战......

  1. 您必须在服务器上维护客户预约的状态
  2. 当客户端在页面之间导航时,此状态必须在连接之间保持不变
  3. 当事件触发时,您必须将消息发送到正确的客户端
  4. 如果该客户端位于页面之间(离线),此时必须存储该消息,直到客户端重新联机,然后发送给他/她。
  5. 编辑:编写一个简单的通知应用程序似乎是一件有趣的事情。您可以将它移植到SignalR非常简单。 Realtime Notification Sample