자동 재연결과 함께 SignalR을 사용하여 클라이언트별 메시지를 보내는 방법
먼저 각 라이브러리를 구현해야 합니다. 링크할 것입니다. 페이지에서 angular 및 c#에 대해 설치하고 기본적으로 사용하는 방법을 더 잘 설명하기 때문입니다.
SignalR을 사용하면 특정 클라이언트 연결로 메시지를 보낼 수 있습니다. SignalR 허브에 연결하는 각 클라이언트에는 고유한 연결 ID가 있기 때문입니다. 프로그램이 연결되면 가장 먼저 해야 할 일은 다음과 같이 해당 connectionId를 얻기 위한 함수를 호출하는 것입니다. 예에서.
connectToWebSocket = () => {
this.hubConnection = new HubConnectionBuilder().withUrl(url)
.withAutomaticReconnect()
.build();
this.hubConnection
.start()
.then(() => console.log('Connection started!'))
.then(() => this.getConnectionId())
.catch(err => console.log('Error while establishing connection :('));
}
public getConnectionId = () => {
this.hubConnection.invoke('getconnectionid').then(
(data) => {
console.log('idConection', data);
this.saveSocketConnection(data).subscribe(response => {
console.log('save socket connection works', response);
});
}
);
}
호출을 통해 연결을 가져와 저장하고 응용 프로그램에 로그인한 사용자와 연결할 수 있습니다. 보시다시피 .withAutomaticReconnect()를 사용했는데 이 메서드는 HubConnection을 자동으로 다시 연결하도록 구성할 수 있으며 연결 끊김이 수십억 가지 이유로 발생할 수 있기 때문에 정말 유용하지만 허브가 다시 연결할 때마다 새로운 connectionId가 생성되고 새로운 id는 onreconnected 콜백에 제공되므로 .onreconnected를 사용하여 새 id를 가져와 저장했습니다.
this.hubConnection.onreconnected(connectionId => {
this.getConnectionId()
});
이제 백엔드를 수신할 메서드를 생성할 시간입니다. 이 경우 연결 이름을 broadcastConversationUser로 지정했지만 모든 이름을 가질 수 있으며 정의한 모든 유형의 개체를 수신할 수 있습니다.
this.hubConnection.on('broadcastConversationUser', (message: Message) => {
console.log('broadcastConversation', message);
});
백엔드에서 메시지를 보내려면 프로젝트에서 허브의 인스턴스를 호출하고 IdSocketConnection 매개변수를 이전에 저장한 connectionId로 정의하고 메서드 이름을 앞에서 했던 것과 같은 방식으로 지정하면 됩니다. 이 경우에는 방송대화사용자
public void sendMessage(string idSocketConnection, Message message){
_hubContext.Clients.Client(idSocketConnection).SendAsync("broadcastConversationUser", message);
}
나에게 그랬던 것처럼 누군가에게 도움이 되길 바라며 행운을 빕니다.
Reference
이 문제에 관하여(자동 재연결과 함께 SignalR을 사용하여 클라이언트별 메시지를 보내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sabrinasuarezarrieta/how-to-send-client-specific-messages-using-signalr-with-automatic-reconnection-4bl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)