Сообщение SignalR не получено в представлении mvc

#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