Я не слишком знаком с signalr2 на asp.net-core, извините, я пытаюсь создать POC о том, как реализовать приложение CRUD в реальном времени с администратором и клиентом, используя signalr2, но у меня проблемы с данными сигнализатора.push, я продолжаю получать NullReferenceException: Object reference not set to an instance of an object.
в этой строке await Clients.All.SendAsync("BroadcastData", data);
Ниже описано, как я настраиваю свой концентратор, используя несколько онлайн-примеров, которые я посмотрел:
public class OddPublisher : Hub
{
private readonly IOddServices _oddService;
public OddPublisher(IOddServices oddService)
{
_oddService = oddService;
}
public async Task BroadcastData()
{
var data = _oddService.ClientQueryOdds();
await Clients.All.SendAsync("BroadcastData", data); //breaks here
}
}
, и это вызваноАдминистратор, при успешной отправке и сохранении данных я вызываю BroadcastData()
public class BaseController : Controller
{
public IOddServices _oddService;
public readonly OddPublisher _publisher;
public BaseController(IOddServices oddService, )
{
_oddService = oddService;
_teamService = teamService;
_publisher = new OddPublisher(oddService);
}
[HttpPost]
public async Task<IActionResult> odd_entry(CreateOdd dto)
{
//somecode here...
var results = _validator.Validate(dto);
if(!results.IsValid)
{
results.AddToModelState(ModelState, null);
return View(dto);
}
_oddService.CreateOddAndTeam(dto);
await _publisher.BroadcastData(); //Breaks
return RedirectToAction(nameof(index));
}
}
Сложив все инструкции, как указано в документации Microsoft Asp.Net Core Signalr, в моем автозагрузке добавлены все необходимые службы.
вот клиент и файл JS,
"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/oddPublisher").build();
connection.on("BroadcastData", data => {
console.table(data);
//getAll();
})
connection.start().then(function () {
getAll();
}).catch(function (err) {
return console.error(err.toString());
});
function getAll() {
var model = $('#dataModel');
$.ajax({
url: '/home/GetLatestOddData',
contentType: 'application/html ; charset:utf-8',
type: 'GET',
dataType: 'html',
success: function (result) { model.empty().append(result); }
});
}
Нужна помощь, ребята, я до сих пор не знаю, что делаю не так, я буду очень признателен, если смогу помочьэто.
Заранее спасибо.