Unity Webgl과 Websocket

FGPRJS·2022년 5월 16일
0

Websocket 서버를 구축하는데 성공했지만 정작 중요한 Webgl 빌드에서 접속할 수 없었다.

  • Unity Windows 빌드에서의 접속 -> 가능
  • index.html 간단한 Echo Server에서의 접속 -> 가능
  • Webgl 빌드에서의 접속 -> 불가능

그와 관해 찾아 보니 공식 문서 v.19.4공식 문서 v.21.3에서는 다음과 같이 설명하였다.

v.19.4
System.Net.Sockets 등 System.Net 네임스페이스에 있는 모든 것)는 WebGL에서 작동하지 않습니다. 동일한 사항이 Unity의 이전 UnityEngine.Network* 클래스에도 적용되며, WebGL 빌드 시 사용할 수 없습니다.

v.21.3
선택적으로 JavaScript의 WebSocket 또는 WebRTC를 사용하여 고유한 네트워킹을 구현할 수 있습니다. .NET 네트워킹 클래스는 사용할 수 없습니다. JavaScript 코드는 IP 소켓에 직접 액세스하여 네트워크 연결을 구현할 수 없기 때문입니다.

System.Net 에 있는 모든 것들은 Webgl에서 동작하지 않는다고 기재되어 있다.

현재 Client가 사용하는 것은 ClientWebServer(System.Net) 이며, 이것 때문에 접속하지 못하는 것이었다.

따라서 다음 링크를 참조하여 대책을 강구한다.

제시하는 방식은 다음과 같았다.

  • UnityWebRequest - 보류
    • UnityWebRequest는 웹 서버와 HTTP통신의 흐름을 다룬다. UnityWebRequest 정보
    • HTTP통신은 정보 일부를 다루는 것은 편리하지만, 그렇게 되면 실시간 통신을 위하여 HTTP Request를 Websocket으로 업그레이드한 서버의 의미가 퇴색되기 때문에, 선택을 보류한다.
  • JavaScript 플러그인 제작 - 채택
    • JavaScript의 플러그인을 제작하여 그것을 사용해 Websocket을 다룰 수 있다고 한다.

      Unity에는 WebSocket 또는 WebRTC를 사용할 수 있는 빌트인 API가 없지만, JavaScript 플러그인을 사용하여 이 기능을 구현할 수 있습니다.

    • 이것을 사용하여 Websocket을 사용하는 것을 고려해 본다.
profile
FGPRJS

0개의 댓글