Подтвердить что ты не робот

SignalR Core не генерирует (сопоставление) Методы клиента

SignalR Core генерирует скрипт хабов, но не добавляет "клиентские" методы. (Нет ошибок на сервере или клиенте - только не работает)

Сгенерированное JS из <script src="http://localhost/signalr/hubs">

proxies['messageHub'] = this.createHubProxy('messageHub'); 
proxies['messageHub'].client = { };
proxies['messageHub'].server = {
        handleMessage: function (receivedString) {
            return proxies['messageHub'].invoke.apply(proxies['messageHub'], $.merge(["HandleMessage"], $.makeArray(arguments)));
         }
    };

Здесь концентратор на стороне сервера:

public class MessageHub : Hub
{
    public void HandleMessage(string receivedString)
    {
        var responseString = string.Empty;

        MessageHandler.HandleMessage(receivedString, ref responseString);

        Clients.All.sendMessage(responseString);

    }
}

Методы sendMessage должны быть включены в прокси-серверы messageHub в файле JS. $.connection.messageHub.client.sendMessage не определено

Создана (и работает) только команда handleMessage для прокси серверов.

Здесь мои включения StartUp.cs для SignalR:

ConfigureServices:

services.AddMvc(options =>
        {
            options.Filters.Add(new RoleFilterAttribute());
        }).AddJsonOptions(options => options.SerializerSettings.ContractResolver =
                new DefaultContractResolver());
services.AddSignalR(options => options.Hubs.EnableDetailedErrors = true)

Настройка:

app.UseWebSockets();
app.UseSignalR();

project.json:

"Microsoft.AspNetCore.Mvc": "1.0.0-*",
"Microsoft.AspNetCore.WebSockets": "1.0.0",
"Microsoft.AspNetCore.SignalR.Server": "0.2.0-*",

НЕКОТОРЫЕ ДОПОЛНИТЕЛЬНЫЕ ПРЕДЛОЖЕНИЯ:

1 - Измените метод на стороне сервера, чтобы увидеть, отображается ли он:

Clients.All.SendMessage(responseString);

Не работает!

2 - Измените клиентскую сторону на динамическое сопоставление:

var connection = $.hubConnection('http://localhost/');
var proxy = connection.createHubProxy('messageHub');
connection.start({ withCredentials: false }).done(function () { console.log("CONNECTED") });
proxy.on("sendMessage", function (result) {console.log(result);});
proxy.invoke("handleMessage", msg).done(function(result)console.log(result);});

Снова работал только handleMessage (сервер).

4b9b3361

Ответ 1

Ну в соответствии с документами вы не указали имя метода, поэтому отправить все строки должно выглядеть так:

public void HandleMessage(string receivedString)
{
    var responseString = string.Empty;

    MessageHandler.HandleMessage(receivedString, ref responseString);

    Clients.All.SendMessage("SendMessage",responseString);

}

Также в следующем правильном порядке

app.UseSignalR(routes =>
        {
            routes.Hub<MessageHub>("/messageHub");
        });

и наконец

    var connection = $.hubConnection('http://localhost/');
var proxy = connection.createHubProxy('messageHub');
connection.start({ withCredentials: false }).done(function () { console.log("CONNECTED") });
proxy.on("SendMessage", function (result) {console.log(result);});
proxy.invoke("HandleMessage", msg).done(function(result)console.log(result);});