본문 바로가기

[HTTP] 웹소켓 핸드쉐이킹 먼저 클라이언트에서 웹소켓 오픈 시, 서버로 아래와 같은 요청이 온다.(일반적인 HTTP 요청의 형태에 몇몇 추가적인 헤더를 담아서 보내는 방식이다.) HTTP/1.1 / GET Connection:Upgrade Sec-WebSocket-Key:alyAT1R7MR+KBq8VjSX0ug== Sec-WebSocket-Version:13 Upgrade:websocket 여기서 살펴보야아 할 값은 Sec-WebSocket-Key인데, 이 값은 서버가 웹소켓 프로토콜을 제대로 이해하고 있는지를 구별하는 역할을 한다. 이제 서버에서는 프로토콜 업그레이드에 대한 응답을 보내주어야 한다.상태 코드는 101번이고, 반드시 Sec-WebSocket-Accept 헤더에 알맞은 값을 채워서 보내야한다. 클라이언트로부터 받은 .. 더보기
[Unity] 왜 만들었는지 모를 IL2CPP IL2CPP는 유니티에서 발표한 AOT 컴파일러이다. 특이한점이 있다면, 인풋은 이미 빌드된 IL 코드 (DLL)이며, 아웃풋은 C++ 코드이다.그러니까 이미 빌드된 바이너리를 다시 뜯어서 컴파일 가능한 C++ 소스코드로 만들어낸다는건데, 어떻게보면 AOT가이나리 디컴파일로 생각할수도 있겠다. 유니티가 주장하는 IL2CPP의 장점- 퍼포먼스 : c++로 변환되서 네이티브 어셈블리로 실행되기 때문에 퍼포먼스 향상이 있다고 한다. 근데 처음부터 c++로 짜여진 코드도 아니고, IL을 c++ 코드로 변환한것이기때문에 최종 결과물인 c++ 코드에 .Net VM 호환성을 위한 코드들이 상당히 많이 들어간다. 어차피 Mono도 JIT이니, AOT니 전부 지원하는데 큰 효과가 있느지는 잘 모르겠다. 유니티측 벤치는 .. 더보기
[C#] Mono 환경인지 구분하기 bool isMonoEnv = Type.GetType("Mono.Runtime") != null; 가끔 모노에서만 오작동하는 코드를 분기처리하기 위해 더보기