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 만 실행된다.
일단 기본 준비는 완료 !
어떻게 통신하는지는 다음 게시글에 이어 적겠습니다.
'프로그래밍 > C#_MagicOnion' 카테고리의 다른 글
[MagicOnion] Client Disconnect 사유 추가 (0) | 2024.11.07 |
---|---|
MagicOnion을 이용한 채팅 만들기 3 : 클라이언트 (0) | 2024.08.09 |
MagicOnion을 이용한 채팅 만들기 2 : Hub, Receiver (0) | 2024.08.09 |
MagicOnion - 개요 (0) | 2024.08.08 |
[MagicOnion] StreamingHub, Filter (0) | 2024.07.30 |
댓글