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
'Programming > C#' 카테고리의 다른 글
C# dynamic csharp (0) | 2025.05.12 |
---|---|
C# 튜플 tuple csharp (0) | 2025.05.12 |
C# 델리게이트 메소드 함수 포인터 (0) | 2025.03.09 |
C# 비동기 프로그래밍 예제 Asynchronous programming Task void async await (0) | 2025.02.28 |
람다 표현식 (0) | 2025.02.14 |