Frage

Ich habe eine Schaltfläche, auf der Benutzer klicken können, um auf etwas zu bieten. Jedes Gebot sendet das neueste Gebot an jeden anderen Kunden. Das ist der Grund, warum ich SignalR verwende.

Jetzt muss der Benutzer aktive Credits haben, und wenn er keine Credits hat, möchte ich ihn irgendwo umleiten.

Der offensichtlichere Ansatz scheitert mir, daher ist ein Vorschlag willkommen.

//Does the user have credits to spend?
if (user.LanceCreditBalance >= 1)
{
    //populate the "ar" object and send it out to everybody.
    var result = Json.Encode(ar);
    Clients.addMessage(result);
}
else
{
    //And this isn't working as expected. Doesn't redirect
    //And causes a 302 error when viewing the Firebug console in Firefox.
    HttpContext.Current.Response.Redirect(@"http://www.google.com");
}

Der obige Code befindet sich alle in der Chat -Klasse, die von der SignalR.hub -Klasse erbt.

War es hilfreich?

Lösung

Server:

if(user.LanceCreditBalance >= 1)
{
    var result = Json.Encode(ar);
    // send Message to all clients
    Clients.addMessage(result);
}
else
{
    // Invoke a js-Function only on the current client
    Caller.redirectMe("http://www.google.com");
}

Klient:

$(function () {
    var chat = $.connection.chat;

    chat.addMessage = function(message) {
        // do something
    };

    // function the server can invoke
    chat.redirectMe = function(target) {
        window.location = target;
    };

    $.connection.hub.start();
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top