본문 바로가기
프로그래밍/C#_MagicOnion

MagicOnion을 이용한 채팅 만들기 2 : Hub, Receiver

by 뽀도 2024. 8. 9.

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까지 만들면 서버 <-> 클라이언트 통신을 위한 인터페이스 정의는 끝남! 

 

 

이제 통신용 클라이언트를 만들러가자! 

반응형

댓글