я использую MVC 5 и у меня есть мой хаб класс как это:signalR веб-страницу обновления клиента новыми элементами
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);
}
}
и у меня есть этот код в моем веб-странице:
$(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() {
});
});
И я также добавил MapHub в Startup моего проекта. Мой вопрос:
На стороне сервера я хочу обновить веб-страницу сразу после создания нового события. Как я могу инициировать широковещательный метод по требованию? Я не могу просто создать экземпляр концентратора и вызвать метод.
Вы можете использовать это: 'контекст уага = GlobalHost.ConnectionManager.GetHubContext(); context.Clients.All.broadcastEvent (....) '? В качестве дополнительной заметки вам следует подумать о создании класса, содержащего свойства для значений, которые вы хотите отправить, вместо создания функции с 13 параметрами. –
Pawel
Спасибо, Паэль, он работает как чудо! .. пожалуйста, оставьте свой комментарий в качестве ответа. Кстати, причиной всех этих параметров является то, что я не был уверен, как сериализовать мой класс для клиента. Не знаете, как это пройти. Можете ли вы дать мне больше информации об этом? – Pouyan
Просто создайте класс и передайте экземпляр. Он будет превращен в JSon, и вы получите объект с другой стороны. – Pawel