본문 바로가기

~ 공부 ~/Computer

역시 일기는 몰아써야 제맛 4편 - 코루틴/제너레이터/비동기/HTTP/Socket/mqtt/TCP/UDP/네트워크 관련

제목이 쓸때없이 긴건 인정 합니다... ㄷㄷㄷ(뭔가 많이 한 것처럼 보이네요ㅋㅋㅋ 개뿔 알지도 못하면서 )


코루틴/제너레이터/비동기/promise / ES7 async/wait

 저번에도 파이썬 하면서 제너레이터 얘기 좀 했었는데 요번에 유니티를 하면서 코루틴이 들어갔었습니다. 아마 저저번주 일듯 합니다. 코루틴을 들으면서 흠... 자바스크립트의 비동기와 제너레이터가 생각났습니다. 최근 C#에는 async가 이미 있는걸로 아는데 유니티와의 조합은 어떻게 되는지 말이죠. 비동기와 제너레이터를 보다가...

자바스크립트의 promise, es7의 async/wait  이것도 또 한번 좀 보게 됬는데 요주의 입니다... promise도 깔끔해 보이는데 es7의 async/wait도 좋아보이네요. 어떻게 비동기를 깔끔하고 편리하게 쓸것인가... 이런거 보다가 다른 언어는 비동기를 어떻게 하고있나... 뭔가 제너레이터나 다른언어 에서는 어떻게 하는지를 보다보니 약간 더 정리되는거 같기도하고 아닌거 같기도 하고... 아직 많이 못 알아봤습니다. 이것도 공부 해야할거.. (산더미)

 

HTTP/ Socket / MQTT / TCP / UDP  네트워크 관련

 요건 최근 몇일간 되게 생각 한건데요. graphql을 보다보면 페북은 relay로 해서 하고 meteor는 apollo로 하고 다들 graphql을 밀고있는 상황인데 이게 미티어하고 어떻게 접목되는지 relay 없이는 어떻게 적용 되는지 subscription graphql 나 apollo 같은 개념도 있고 아직도 개념 정립이 안됬습니다.(제가 만들때 어떤걸 쓸지)  그러다가 네트워크 까지 오게됬습니다. http부터 polling, long-polling, server-sent 나 comet 그러다가 websocket을 보다보면 소켓은 socket.io, sockjs, engine.io, primus 등등이 있으며 webRTC 또는 최근에 HTTP2.0도 있고합니다. 게임 프로그래밍 하면서 게임쪽을 어떻게 하나 궁금해서 보면 기본적인 TCP/IP나 UDP 같은 소켓통신을 보다보니 이런저런 생각이 듭니다. 거기다가 mqtt같은것들 보다보면 pub/sub 메세지 브로커인 mosquitto, RabbitMQ, ActiveMQ 라던지 push서비스는 어떻게 되는지 대충 개념은 잡히긴 잡혔는데 적용은 확실히 어떻게 해야할지 모르는 상태입니다. http보다 websocket이 무조건 좋은거 같은데 말이죠...(HTTP/2는 제처두고요) 단점이라고 생각해 볼수있는게

1) port를 열어놓고 connection을 열어두는게 자원을 많이 차지한다.

2)아니면 nginx나 reverse proxy 같은거 할때 sticky session인가 이런것들이 있는거 같은데 잘 모르겠네요. nginx보면 websocket 다 지원한다고 나와있고 말이죠. 근데 일단 저는 websocket이 미래인거 같습니다.(게임에서는 당연히 몇십년 전부터.. 기껏해야 웹은 최근 몇년 밖에 안됬고 말이죠)

 

일단 굉장히 좋을글 하나 투척합니다. 영어인건 ㅈㅅ합니다...( http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/ )  게임 프로그래밍에서의 네트워크에 관한거고요 역사적으로 어떤 문제들이 있었고 어떻게 해결하고 이런 내용인데 굉장히 좋습니다. 웹쪽도 따로 보시고 하면 두개가 한꺼번에 이해가 되면서 역시 웹은 게임한테 안돼... 라는 생각이 들긴하지만(이 생각이 맞는지 모르겠지만) 확실히 이해 하는데는 짱 좋습니다. 완전 강추 입니다. 강추요. 꼭 보세요. 근데 아직도 읽어 봐야할게 산더미 입니다 ㄷㄷㄷ

 p.s. 미티어 갔다와서 살짝 조금 더 정리된거 같지만 아직도 완벽히 구상이 안됩니다... 후...