Я делал в другом проекте похожую вещь, она прекрасно работала. Суть:
при переходе на страницу MyData присылаются данные на клиента js, он должен их вывести
Сейчас я сделал все по этой статье
https://metanit.com/sharp/aspnet5/30.6.php, я понимаю что всё должно работать, но нет. Нет никаких ошибок, подключение хаба с клиентом js устанавливается без проблем, но не выводятся данные.
Controller
public class HomeController : Controller
{
private ApplicationDbContext _db;
private IHubContext<MoexHub> _hub;
public HomeController(ApplicationDbContext db, IHubContext<MoexHub> hub)
{
_db = db;
_hub = hub;
}
public IActionResult Index()
{
return View();
}
public async Task<IActionResult> MyData()
{
await _hub.Clients.All.SendAsync("notify", "this is my message");
return View();
}
}
JS
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
// получение сообщения от сервера
hubConnection.on('notify', function (message) {
// создает элемент <p> для сообщения пользователя
let elem = document.createElement("p");
elem.appendChild(document.createTextNode(message));
document.getElementById("notify").appendChild(elem);
console.log(message);
});
hubConnection.start();
VIEW
<div id="notify"></div>
Layout, а именно как подключены все файлы
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/signalr/dist/browser/signalr.min.js"></script>
<script src="~/js/LoadData.js"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
В startup я разумеется всё добавил, никаких ошибок нет.