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

MagicOnion을 이용한 채팅 만들기 1 : Server

by 뽀도 2024. 8. 8.

MagicOnion을 이용한 채팅 만들기 1 : Server

자 이제 개요를 알았으니 서버를 만들어보자. 

기본적으로 MagicOnion/GitHub의 QuickStart를 보고 차근차근 만들것이다.


 

 

1. VisualStudio -> 새 프로젝트 만들기 -> Asp.Net Core 비어 있음

 

2. 프로젝트 이름 셋팅 

 

3. 추가 정보 입력 

- .NET 8.0 장기 지원 

-  최상위 문 사용 안 함 

- 만들기 클릭 

 

4. 솔루션이 생성되면 F5 눌러서 디버그 모드로 실행, 이때 program.cs 코드 내용 

 

👩🏼‍💻 program.cs

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

 

 

🖥️ 실행시 화면

 

 

여기 까지 했으면 기본은 했다.

 

 

5. Nuget  추가 

 

5-1. NET CLI 를 사용

dotnet add package Grpc.AspNetCore
dotnet add package MagicOnion.Server


혹은 

5-2. Nuget 패키지 매니저사용하여 

Grpc.AspNetCore, MagicOnion.Server 두개 추가

 

5-3. 패키지에 추가 된 것 확인 

 

 

👩🏼‍💻 6. Program.cs 코드 수정 

using Microsoft.AspNetCore.Server.Kestrel.Core;

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(options =>
{
    // WORKAROUND: Accept HTTP/2 only to allow insecure HTTP/2 connections during development.
    options.ConfigureEndpointDefaults(endpointOptions =>
    {
        endpointOptions.Protocols = HttpProtocols.Http2;
    });
});

builder.Services.AddGrpc();       // Add this line(Grpc.AspNetCore)
builder.Services.AddMagicOnion(); // Add this line(MagicOnion.Server)

var app = builder.Build();

app.MapMagicOnionService(); // Add this line

Console.WriteLine("#### Chat Server Start ####");

app.Run();

 

grpc 기반이라 builder.Services.AddGrpc(); 추가 

builder.Services.AddGrpc(); 

 

Kestrel 옵션 추가

- gRPC가 http2 기반이라 이 코드를 명시적으로 넣어주지 않으면, http1을 사용할지 http2를 사용할지 혼동이 와서 에러 나기 때문에 써줘야 한다. 

builder.WebHost.ConfigureKestrel(options =>
{
    // WORKAROUND: Accept HTTP/2 only to allow insecure HTTP/2 connections during development.
    options.ConfigureEndpointDefaults(endpointOptions =>
    {
        endpointOptions.Protocols = HttpProtocols.Http2;
    });
});

 

MagincOnion을 사용하기 위해


builder.Services.AddMagicOnion(); 과 

app.MagicOnionService(); 추가 

 

 

7. launchSetting.json 수정 

 

launchSetting.json (수정전)

{
  "profiles": {
    "http": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "dotnetRunMessages": true,
      "applicationUrl": "http://localhost:5219"
    },
    "https": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "dotnetRunMessages": true,
      "applicationUrl": "https://localhost:7281;http://localhost:5219"
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:7302",
      "sslPort": 44328
    }
  }
}

 

launchSetting.json (수정후)

{
  "profiles": {
    "dev": {
      "commandName": "Project",
      "commandLineArgs": "--env=dev",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "dotnetRunMessages": true
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json"
}

 

왜 바꾸냐면 http, https, iissetting을 사용하지 않을꺼라 profile부분과 iissettings 부분을 수정한다.

 

8. 수정후 다시 실행

 

웹페이지는 실행안되고, console 만 실행된다. 

일단 기본 준비는 완료 ! 

 

어떻게 통신하는지는 다음 게시글에 이어 적겠습니다. 

 

 

반응형

댓글