user348173
user348173

Reputation: 9278

call controller by timer

I have to send query to remote program and recieve data. Then put them in my DB. This is possible to call controller's action every 60 seconds for example?

Thanks.

PS. I think it's must be done on server side. Not JS solution.

UPDATE:

First, I have MS SQL Server DB.
Second, There is remote program that listen specific TCP port and waiting a query. I want to send a query every 60 seconds and parse response, then put parsed data in my MS SQL Server DB.

Upvotes: 0

Views: 488

Answers (5)

amdmax
amdmax

Reputation: 761

Depending on how flexible your solution should be I would play around with Windows Service solution with Timer in it either with Quartz.Net. You can find more details using the link below http://quartznet.sourceforge.net/

Upvotes: 1

Peter
Peter

Reputation: 7804

Your question is confusing. But since we are only here to guess at what you are on about here's a solution that might come close.

(P.S. I haven't compiled or tested this...because why should I care)

class ConsoleApplication
{
public static void Main()
{
  Timer myTimer = new Timer();
  myTimer.Elapsed += new ElapsedEventHandler( DoAction );
  myTimer.Interval = 1000;
  myTimer.Start();

  while ( Console.Read() != 'q' )
  {
      ;    // do nothing...
  }
}

public static void DoAction( object source, ElapsedEventArgs e )
{
    Console.WriteLine("Made request at {0}", DateTime.Now);

    using (WebClient client = new WebClient())
    {               
        using (Stream stream = client.OpenRead("http://whereever"))
        using (StreamReader reader = new StreamReader(stream))
        {
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}
}

Upvotes: 1

Aleksej Vasinov
Aleksej Vasinov

Reputation: 2797

You could use cron on *nix base system. Or your program could trigger events every hours

0 * * * *  lynx url-of-your-program-address.com/action/to/call

Upvotes: 1

RPM1984
RPM1984

Reputation: 73112

I think you would be better off using a standalone service (windows, wcf, msmq, etc) that runs in the background and "sends the query" and saves to your DB.

Web Applications are not designed to be utilized as time-based "always alive" mechanisms. "Timing" needs state, and HTTP is a stateless protocol.

Don't try to shoehorn functionality into something that isn't designed to handle it.

Then again i could be completely misunderstanding your question. Quite possible.

Confusing statements:

This is possible to call controller's action

If it's external, how do you know it's a controller? Is this an external API?

There is remote program that listen specific TCP port and waiting a query

That doesn't sound like a web application/controller.

Upvotes: 1

Nishant
Nishant

Reputation: 21914

Using Ajax you could create a timer to send data to the controller every x seconds . A spellchecker plugin in my web application does this , to do spell checking as you type .

Upvotes: 1

Related Questions