본문 바로가기

유니티/매뉴얼

[유니티 매뉴얼] Node.js 서버와 유니티 클라이언트간의 socket.io 웹소켓(Websocket) 통신.

728x90
반응형

1. 웹소켓(Websocket) 서버(Server)

 

웹소켓(WebSocket)은 하나의 TCP 접속에 양방향 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다.

socket.io는 Websocket용 네트워크 라이브러리 입니다. 

Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼입니다.

 

결과적으로 웹소켓 서버는 socket.io를 이용하여 개발한 웹소켓(WebSocket)을 Node.js에서 실행시키는 것입니다.

 

1.1 Node.js 설치

 

1.1.1 다운로드 : https://nodejs.org/en/

 

1.1.2 LTS 파일 다운로드

 

 

1.1.3  Welcome to the Node.js Setup Wizard 창에서 Next 클릭.

 

 

1.1.4 I accept the terms in the Licenese Agreement 클릭 후 Next 클릭.

 

 

1.1.5 Destination Floder 에 원하는 설치 위치 선책 후 Next 클릭.

 

 

1.1.6 Custom Setup창에 Next 클릭.

 

 

1.1.7 Tools for Native Modules창에서 Next 클릭.

 Automatically install the necessary tools...을  On 클릭을 하게 되면, Python과 Studio Build Tools 등이 설치 됩니다.

 

 

 

1.1.8 Install 클릭

 

 

1.1.9 설치 완료. Finish 클릭.

 

 

 

1.2 서버 js 파일 생성

 

1.2.1 서버를 설치 할 폴더 생성

 

 

1.2.2 서버로 사용할 (텍스트)파일 생성

 

 

1.2.3 서버로 사용할 js파일로 파일 이름 바꾸기

 

 

1.2.4 Server.js 내용 입력

 

const WebSocket = require('ws') 
const wss= new WebSocket.Server({ port: 8000 },()=>{ 
    console.log('서버 시작') 
}) 

wss.on('connection', function connection(ws) { 
   ws.on('message', (data) => { 
      console.log('받은 데이터 : %o', data) 
      ws.send(data); 
   }) 
}) 

wss.on('listening',()=>{ 
   console.log('리스닝 ...') 
})

 

1.2.5 명령 프롬프트 실행

 

1.2.6 웹서버 폴더로 이동

 

 

1.2.7 npm install express socket.io

 

 

1.2.8. node server.js

 

 

 

2. 웹소켓(WebSocket) 클라이언트(Client)

2.1 유니티 새 프로젝트 생성.

 

2.2 Nuget Unity 플러그인을 다운로드 : github.com/GlitchEnzo/NuGetForUnity/releases/tag/v2.0.1

 NuGetForUnity2.0.1.unitypackage 파일 다운로드 후 임포트.

 

 

 

2.3 풀다운메뉴에서 Manage NuGet Packages 실행

 

 

 

2.3 NuGet창이 뜨면, WebSocketSharp-netstandard 검색 후 Install 클릭.

 

 

 

2.4 SocketIoClient.cs 파일

 

using UnityEngine;
using WebSocketSharp;

public class SocketIoClient : MonoBehaviour
{
    private WebSocket m_WebSocket;

    void Start()
    {
        m_WebSocket = new WebSocket("ws://localhost:8000");
        m_WebSocket.Connect();

        m_WebSocket.OnMessage += (sender, e) =>
        {
            Debug.Log($"{((WebSocket)sender).Url}에서 + 데이터 : {e.Data}가 옴.");
        };
    }

    void Update()
    {
        if (m_WebSocket == null)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            m_WebSocket.Send("안녕");
        }
    }
}

 

728x90
반응형