Использую базовую библиотеку 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
Я теряю соединение с концентратором даже до публикации события.
Может кто-нибудь сказать мне, что я здесь не так делаю?Я публикую событие не в том месте?