MagicOnion을 이용한 채팅 만들기 2 : Hub, Receiver
지난 글에 이어 서버 <-> 클라가 통신을 하기 위해 Hub, Receiver를 만들자.
1. 새 프로젝트 추가
- 클래스 라이브러리
2. 이름
- Shared (자기 마음대로 하시면 됩니다! 저는 공유하는 프로젝트라 shared 라고 했어요)
3. 추가 정보
- .NET 8.0 만들기
4. TReceiver 추가
[TReceiver 설명]
- MagicOnion에서 실시간 통신을 할 때 매우 중요한 역할을 하는 개념
- 주로 클라이언트 측에서 사용, 서버-> 클라이언트 데이터 푸시할 때 이를 수신하는 역할을 한다!
- 클라이언트에서 특정 Hub와 연결될 때, 이 TReceiver 타입 객체가 생성됨,
- 서버에서 발생하는 이벤트나 메시지를 실시간으로 받을 수 있음!
그럼 Receiver 인터페이스를 만들자 !
👩🏼💻 IChatHubReceiver.cs
namespace Shared
{
public interface IChatHubReceiver
{
// 메시지 응답에 대한 처리
void OnSendMessage(string message);
// join 응답에 대한 처리
void OnJoin(string connectionId);
}
}
5. IStreamingHub 와 Hub
- MagicOnion 라이브러리에서 제공하는 핵심 인터페이스
- 이 인터페이스는 클라이언트와 서버간의 실시간 양방향 통신을 가능하는 역할을 함
- IStreamingHub는 클라이언트 와 버거 간에 지속적인 연결(스트림) 을 유지하면서 데이터를 주고 받을 수 있음
- Hub 클래스는 뭘까?
- IStreamingHub를 구현한 클래스로 이 클래스를 통해 클라이언트와 서버 간의 실시간 통신로직을 작성
- 클라이언트와의 연결을 관리하고, 클라이언트로부터 받은 요청을 처리
👩🏼💻 IChatHub.cs
using MagicOnion;
namespace Shared
{
public interface IChatHub : IStreamingHub<IChatHub, IChatHubReceiver>
{
Task JoinAsync();
Task SendMessageAsync(string message);
}
}
6. Shared 폴더 구조
이렇게 IChatHub 와 IChatHubReceiver까지 만들면 서버 <-> 클라이언트 통신을 위한 인터페이스 정의는 끝남!
이제 통신용 클라이언트를 만들러가자!
'프로그래밍 > C#_MagicOnion' 카테고리의 다른 글
[MagicOnion] Client Disconnect 사유 추가 (0) | 2024.11.07 |
---|---|
MagicOnion을 이용한 채팅 만들기 3 : 클라이언트 (0) | 2024.08.09 |
MagicOnion을 이용한 채팅 만들기 1 : Server (0) | 2024.08.08 |
MagicOnion - 개요 (0) | 2024.08.08 |
[MagicOnion] StreamingHub, Filter (0) | 2024.07.30 |
댓글