j'utilise MVC 5 et j'ai ma classe de centre comme celui-ci:signalR mise à jour la page Web client avec de nouveaux articles
public class EventHub : Hub
{
public void broadcastEvent(string userId = "",
string source = "",
string application = "",
string type = "",
string importance = "",
string message = "",
string timeStamp = "",
string stackTrace = "",
string exceptionMessage = "",
string innerExceptionMessage = "",
string objectContext = "",
string serverName = "",
string actionResult = "")
{
Clients.All.broadcastEvent(userId, source, application, type, importance, message, timeStamp, stackTrace, exceptionMessage, innerExceptionMessage, objectContext, serverName);
}
}
et j'ai ce code dans ma page web:
$(function() {
var app = $.connection.eventHub;
app.client.broadcastEvent = function (userId,
source,
application,
type,
importance,
message,
timeStamp,
stackTrace,
exceptionMessage,
innerExceptionMessage,
objectContext,
serverName,
actionResult) {
// Html encode display name and message.
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
// Add the message to the page.
$('.row').append("div>asfdasdf</div>");
};
$.connection.hub.start().done(function() {
});
});
Et j'ai également ajouté le MapHub au démarrage de mon projet. Ma question est:
Sur le côté serveur, je veux mettre à jour la page Web dès qu'un nouvel événement a été créé. Comment puis-je déclencher la méthode de diffusion à la demande? Je ne peux pas simplement créer une instance du concentrateur et appeler la méthode.
Peut-on utiliser ceci: 'var contexte = GlobalHost.ConnectionManager.GetHubContext(); context.Clients.All.broadcastEvent (....) '? En remarque, vous devriez envisager de créer une classe contenant des propriétés pour les valeurs que vous voulez envoyer au lieu de créer une fonction avec 13 paramètres. –
Pawel
Merci Pawel, ça marche comme un miracle! .. s'il vous plaît mettez votre commentaire comme une réponse. BTW, la raison derrière tous ces paramètres est que je ne savais pas comment sérialiser ma classe pour le client. Vous ne savez pas comment le transmettre Pouvez-vous me donner plus d'informations à ce sujet? – Pouyan
Créez simplement une classe et passez une instance. Il sera transformé en JSon et vous obtiendrez un objet de l'autre côté. – Pawel