본문 바로가기

Programming/C#

C# 웹소켓 WebSocket 주요 메서드 정리

728x90

C# Server

app.UseWebSockets();

if (!context.WebSockets.IsWebSocketRequest)
{
    context.Response.StatusCode = 400;
    return;
}

using WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();

while (webSocket.State == WebSocketState.Open)
{
    var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
    string message = Encoding.UTF8.GetString(buffer, 0, result.Count);
    Console.WriteLine($"받은 메시지: {message}");

    byte[] sendBuffer = Encoding.UTF8.GetBytes($"{message}");
    await webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
}

 

★app.UseWebSockets

WebSocketMiddleware 를 요청 파이프라인에 추가합니다.

★context.WebSockets.IsWebSocketRequest

요청이 WebSocket 설정 요청인지 여부를 나타내는 값을 가져옵니다.

★context.WebSockets.AcceptWebSocketAsync

요청을 WebSocket 연결로 전환합니다.

★webSocket.State

WebSocket 연결의 현재 상태를 반환합니다.

★WebSocketState.Open

HTTP 핸드셰이크가 완료된 후의 초기 상태입니다.

★webSocket.ReceiveAsync

WebSocket 연결에서 데이터를 비동기적으로 받습니다.

★webSocket.SendAsync

WebSocket 연결을 통해 데이터를 비동기적으로 보냅니다.

javascript Client

const socket = new WebSocket("wss://localhost:7143/ws/");
socket.onopen = () => {};
socket.onmessage = () => {};
socket.onclose = () => {};
socket.send(message);

★new WebSocket

새로운 WebSocket 객체를 반환합니다.

★socket.onopen

WebSocket 연결이 되면 오픈 이벤트가 실행됩니다.

★socket.onmessage

WebSocket 통해 데이터를 수신하면 메시지 이벤트가 실행됩니다.

★socket.onclose

닫기 이벤트는 WebSocket 연결이 종료될 때 실행됩니다.

★socket.send

지정된 데이터를 WebSocket 연결을 통해 서버로 전송합니다.

 

★코드

https://github.com/SpringFish90/csharpExample/tree/main/WebSocket

 

728x90