in my project i want to update my data table if new data received. my project contains an MVC .Net project, a web service and a windows form application.
when new data information entered in winfom app, data send to service and service update database and then call SignalR hub in web app (mvc).
in my web app i can call signalR in view file (cshtml file) by using JavaScript model (like chat clients in microsoft documents). this method works well in web app but i can't use call it from my web service. also i find some demo that used some models (like 2 console applications that used signalR) but i can't convert that in my solution.
this is my hub (dataHub):
public class DataHub : Hub
{
/// <summary>
/// update software/companies live update table. data came from signal action in HomeController.
/// </summary>
/// <param name="signalFor"></param>
/// <param name="id"></param>
/// <param name="weight"></param>
/// <param name="name"></param>
/// <param name="datetime"></param>
public void UpdateSignal(string signalFor, string id, string weight, string name, string datetime)
{
Clients.All.readyforupdate(signalFor, id, weight, name, datetime);
}
}
i call it from an actionResult named signal.
/// <summary>
/// update signals form other palces.
/// </summary>
/// <param name="signalFor">"software", "company"</param>
/// <param name="id">signal data id</param>
/// <param name="weight">signal data weight</param>
/// <param name="name">signal data name</param>
/// <param name="datetime">signal data datetime</param>
/// <returns></returns>
public ActionResult Signal(string signalFor, string gid, string weight, string name, string datetime)
{
ViewBag.signalFor = signalFor;
ViewBag.id = gid;
ViewBag.weight = weight;
ViewBag.name = name;
ViewBag.datetime = datetime;
return View();
}
my question is: how i can call my signalR hub update function directly from web service (with using url of page) without using JavaScript model.
update
thanks. this works for me:
public string sender()
{
var ran = new Random();
var x = new LiveUpdate
{
Id = Guid.Parse("9FEDD9FB-FE14-4BC2-B0BD-296E71ABAC26"),
Weight = ran.Next(20000, 35000),
Name = "companyName",
Datetime = DateTime.Now
};
var hubConnection = new HubConnection("http://localhost:5138/");
IHubProxy myHub = hubConnection.CreateHubProxy("DataHub");
hubConnection.Start().Wait();
myHub.Invoke("UpdateSignal",
"company",
x.Id.ToString(),
x.Weight.ToString(),
x.Name,
x.Datetime.ToShortTimeString()
);
return "send";
}