Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC4中使用信号器的提醒模型_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Azure - Fatal编程技术网

C# MVC4中使用信号器的提醒模型

C# MVC4中使用信号器的提醒模型,c#,asp.net,asp.net-mvc,asp.net-mvc-4,azure,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Azure,概述:我想创建一个余数,用于用户输入报警通知。我有一个带有用户名和输入日期的查看页面。若提交成功,则应将其存储在数据库中。如果客户端时间(机器时间)和用户输入时间(服务器时间)匹配,我想使用信号器触发提醒。它应该提供一个弹出窗口,显示带有用户名和提醒时间的通知 说明: Homepage Username: textbox Reminder date and time: textbox Save reminder: button 用户单击“保存提醒”,时间将保存在数据库中。 当当前时间与使

概述:我想创建一个余数,用于用户输入报警通知。我有一个带有用户名和输入日期的查看页面。若提交成功,则应将其存储在数据库中。如果客户端时间(机器时间)和用户输入时间(服务器时间)匹配,我想使用信号器触发提醒。它应该提供一个弹出窗口,显示带有用户名和提醒时间的通知

说明:

Homepage

Username: textbox

Reminder date and time: textbox

Save reminder: button
用户单击“保存提醒”,时间将保存在数据库中。 当当前时间与使用信号R的提醒日期和时间相对应时,显示带有用户名的弹出窗口

(要检查输出,请在两个不同的浏览器中打开localhost url,并查看弹出窗口是否同时打开。)

一个好的开始是,请记住,检查日期是否匹配需要某种定期任务(如果要将所有内容都保存在同一个web应用程序中,可以查看)

一种简单的方法如下所示:

集线器

Kepp指出,如果您有多个服务器或工作进程,您可能必须将SignalR连接和用户名之间的映射存储在其他位置

任务 对于定期任务,您有多个选项,一个HangFire任务、一个窗口服务或一个作为计划任务运行的简单控制台应用程序

我将假设这是一个控制台应用程序

您将需要,查看一下客户端的正确设置

var hubConnection = new HubConnection("**YOUR URL**);
await hubConnection.Start();
IHubProxy proxy = hubConnection.CreateHubProxy("ReminderHub");

// QUERY THE DATABASE Check if there's any user to notify
for(var username in UsersToNotify){
    proxy.Invoke("Notify", username);

}

请记住,我有很多改进。这段代码只是一种简单的方法。

这里是否有使用字典的替代品?当然,实际上您可能已经有了某种身份验证。请看一看,您可以使用Redis或服务状态服务器之类的工具来映射。我还有一个疑问。我需要为用户输入显示datetime控件。我知道HTML5中有datetime输入类型。但是我的浏览器不支持datetime。那么我如何显示datetime控件呢?嗨,这个问题与原来的问题没有特别的关系。有很多选择,你可以选择,或者像这样的轻量级解决方案。
var hub = $.connection.reminderHub;
hub.client.notify = function (username) {
    alert(username)
};

$.connection.hub.start().done(function () {
   // Wire up save reminder option.
   $('#save').click(function () {
        hub.server.Store($('#username').val(), $('#date').val());

   });
});
var hubConnection = new HubConnection("**YOUR URL**);
await hubConnection.Start();
IHubProxy proxy = hubConnection.CreateHubProxy("ReminderHub");

// QUERY THE DATABASE Check if there's any user to notify
for(var username in UsersToNotify){
    proxy.Invoke("Notify", username);

}