2017-06-07 2 views
1

Ich führe das Lager Signal Beispiel und versuchen, den Code zu ändern und etwas anderes zu versuchen. Was ich will, ist auf einen Front-End-Knopf drücken, um einen Ajax-Anruf anzurufen und von dort aus eine Hub-Methode aufzurufen. Wenn ich das tue mir schlage ich meinen Haltepunkt nicht in meinem Hub MethodeSignaler Calling Hub-Methode von Code hinter Ajax Call

Vorderseite Änderung Endcode:

$.connection.hub.start().done(function() { 
$('#sendmessage').click(function() { 
// Call the Send method on the hub. 
$.ajax({ 

url: '/home/MyTest/', 
type: "POST", 
success: function() { 
alert("done"); 
}, error: function (jqXHR, exception) { 
alert("failed"); 
} 

}); 
//chat.server.send($('#displayname').val(), $('#message').val()); 
// Clear text box and reset focus for next comment. 
$('#message').val('').focus(); 
}); 
}); 

In HomeController.cs

[HttpPost] 
public void MyTest() 
{ 
var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); 
context.Clients.All.send("a","b"); 
} 

ChatHub.cs

public class ChatHub : Hub 
{ 
public void Send(string name, string message) 
{ 
// Call the addNewMessageToPage method to update clients. 
Clients.All.addNewMessageToPage(name, message); 
} 
} 

Antwort

1

Die Hub-Methode auf dem Server wird nicht ausgeführt ... Was

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); context.Clients.All.send("a","b");

sagt, ist: Auf jedem Client, der eine offene/aktive Verbindung zum Hub hat, ich bin einesend Funktion auf dem Client aufgerufen wird. Nicht auf dem Hub auf dem Server.

+0

ahhhhhhh ... danke. Ich zog mir die Haare aus. Also dann in dieser Funktion rufen Sie "Senden". Ich würde den Anruf an den Server richtig aufrufen –

+0

Das ist eine Möglichkeit, es zu tun, ja sicher –

+0

Vielen Dank Mark –