SignalR сервер-метод клиента не работает
На основе различных ресурсов signalr
код должен работать, но я не могу отправить уведомления от сервера клиенту. Вот часть html/javascript:
<script src="/Scripts/jquery-1.6.4.min.js"></script>
<script src="/Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="/signalr/js"></script>
<script type="text/javascript">
$(function () {
var cHub = $.connection.cHub;
$.connection.hub.logging = true;
cHub.client.sendMessage = function (content) {
$("#container-hub").append($("<p />").html(content));
};
$.connection.hub.start().done(function() {
$('[id$=bGo]').click(
function() {
cHub.server.send('Sync process started');
});
});
});
</script>
<div id="container-hub" style="background: red; height: 100px; width: 100%;"></div>
Класс Hub.cs:
using Microsoft.AspNet.SignalR;
namespace CMS.Objects
{
public class CHub : Hub
{
public void Send(string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.sendMessage(message);
}
}
}
Класс Startup.cs:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(CMS.CStartup))]
namespace CMS
{
public class CStartup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
А вот как я называю метод sendMessage
метод:
private void ShowMessage(string message)
{
var clients = GlobalHost.ConnectionManager.GetHubContext<CHub>().Clients;
clients.All.sendMessage(message);
}
Когда кнопка bGo
нажата сообщение добавляется к container-hub
Div, но ничего, когда я звоню sendMessage
метод.
РЕДАКТИРОВАТЬ
Некоторые дополнительные выводы; когда я звоню sendMessage
изнутри OnConnected
Метод это работает:
public override Task OnConnected()
{
Clients.All.sendMessage("Connection Initialised");
return base.OnConnected();
}
1 ответ
Потратив некоторое время на изучение проблемы, я наконец нашел решение. Не уверен на 100%, но я думаю, что проблема была с использованием UpdatePanel
на странице. завернутый signalR
код JavaScript для Sys.Application.add_load
вместо использования jQuery's $(function () {
и это начало работать.
Я упомянул, что не уверен на 100%, что UpdatePanel
с ScriptManager
был удален несколько раз, не давая результатов перед публикацией вопроса.