#c# #asp.net-mvc #signalr #signalr-hub #signalr.client
Вопрос:
Я пытаюсь отправлять сообщения из api в мое представление, которое работает на отдельном api. Концентратор включен, и сообщение отображается на обычной html-странице с журналом. но ничего не отображается, когда я использую его в своем представлении cshtml. мой первый URL-адрес api выглядит так http://localhost:2003/ мой второй api http://localhost:2001/
hub.cs в 2003 году
[HubName("ContosoChatHub")]
public class ContosoChatHub : Hub
{
public void SendQuestiontoClient(string msg)
{
string publishtime = Convert.ToString(DateTime.UtcNow);
Clients.All.addSendQuestiontoClient(msg);
}
}
startup.cs, который вводится в обоих api
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
контроллер вызывает метод отправки сообщений с 2003 года
public IHttpActionResult SendHubMessage()
{
var response = new ApiResponse<bool>(RequestId);
try
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub>();
for (int i= 0;i<i 1;i )
{
Thread.Sleep(4000);
hubContext.Clients.All.addSendQuestiontoClient(i "th Message");
}
response.Data = true;
response.Status = new ApiStatus(ResponseStatus.SuccessStatus.GetErrorCode(),
ResponseStatus.SuccessStatus.GetErrorDescription());
return Ok(response);
}
test.html который работает и показывает новые сообщения и консоль входа в систему
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="jquery.signalR-2.2.0.min.js"></script>
<script src="http://localhost:2003/signalr/hubs"></script>
<script>
$(function () {
var connection = $.hubConnection();
connection.logging=true;
connection.url = "http://localhost:2003/signalr";
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
contosoChatHubProxy.on('addSendQuestiontoClient', function (msg) {
console.log(msg);
});
connection.start({ withCredentials: false }).done(function () {
});
});
</script>
test.cshml, который не работает и не отображается в консоли
@section scripts{
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="http://localhost:2003/signalr/hubs"></script>
<script>
$(function () {
var connection = $.hubConnection();
connection.logging = true;
connection.url = "http://localhost:2003/signalr";
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
contosoChatHubProxy.on('addSendQuestiontoClient', function (msg) {
console.log(msg);
connection.start({ withCredentials: false }).done(function () {
});
});
});
</script>
}@
Комментарии:
1. Возможно, вам следует вызвать SendQuestiontoClient вместо addSendQuestiontoClient