Ошибка при попытке опубликовать событие в методе клиента из хаба с помощью библиотеки signalR ядра asp.net - PullRequest
0 голосов
/ 23 октября 2018

Использую базовую библиотеку signalR asp.net для получения данных с сервера в реальном времениЯ использую aurelia и машинопись на стороне клиента.

На методе приема на стороне клиента публикую событие, так что в любое время, когда данные изменяются на стороне сервера, подписанное событие извлекает данные без страницыre-fresh.

Вот мой код на стороне клиента:

this.connection = new signalR.HubConnectionBuilder()
    .withUrl("http://localhost:5003/chat")
    .configureLogging(signalR.LogLevel.Debug)
    .build();

    this.connection.start().then(()=>{ 

        this.connection.on("ReceiveMessage", (event, message) => { 

            console.log("got the message=>",event);
            this.EventAggregator.publish(event, JSON.parse(message));  

    });
    this.connection.invoke("SendMessage").catch(err => console.error(err.toString()));

}); 

на стороне сервера у меня есть:

 public class ChatHub : Hub
{
    public async Task SendMessage()
    {
        System.Console.WriteLine("in send message");

        string data = "[{\"Id\":6,\"Count\":0},"+
               "{\"Id\":5,\"Count\":0}]";

        await Clients.All.SendAsync("ReceiveMessage","event1",data);
    }
}

Когда я запускаю его, яна консоли появляется следующая ошибка:

Uncaught TypeError: Cannot read property 'publish' of undefined
at HubConnection.eval (signalRservice.ts:16)
at eval (HubConnection.js:378)
at Array.forEach (<anonymous>)
at HubConnection.invokeClientMethod (HubConnection.js:377)
at HubConnection.processIncomingData (HubConnection.js:314)
at WebSocketTransport.HubConnection.connection.onreceive (HubConnection.js:141)
at WebSocket.webSocket.onmessage (WebSocketTransport.js:171)
(anonymous) @ signalRservice.ts:16
(anonymous) @ HubConnection.js:378
HubConnection.invokeClientMethod @ HubConnection.js:377
HubConnection.processIncomingData @ HubConnection.js:314
HubConnection.connection.onreceive @ HubConnection.js:141
webSocket.onmessage @ WebSocketTransport.js:171

Я теряю соединение с концентратором даже до публикации события.

Может кто-нибудь сказать мне, что я здесь не так делаю?Я публикую событие не в том месте?

1 Ответ

0 голосов
/ 24 октября 2018

Кажется, что EventAggregator не инициализирован.Может ли быть так, что он не был автоматически введен или инициализирован вручную перед использованием?

@autoinject
export class ClientHub {
    constructor(private eventAggregator: EventAggregator) {
    }
}

Затем должен быть инициализирован EventAggregator DI Aurelia.

...