말 그대로 파일 또는 디렉토리가 없을 경우 나오는 에러이다.


가장 흔한 실수가 생성한 파일명과 호출하는 파일명이 다를 경우이다.


app.get("/", function (req, res) {
res.sendfile(__dirname + "/index.html");
});


이렇게해서 현재 경로(__dirname)을 부르고 + HTML 파일명으로 하는데...


생성한 파일 이름이 위  index.html이 아닐때 이 에러가 발생한다.

Posted by sungho88
,

1. 클라이언트와 서버


클라이언트와 서버

이전의 일반적인 사이트는 단순히 클라이언트의 요청(request)과 서버의 응답(response)로 작동했다.

주소창에 URL주소를 입력하거나, 웹사이트에 들어가 뉴스 링크를 클릭하는 등의 동작으로 Request가 발생하는데 

이 Request가 서버로 전달되면 서버는 Response를 보낸다. 즉, 서버는 클라이언트의 Request가 없으면 데이터를 전송하지 않는다. Request가 클라이언트쪽에서 먼저 시작되고, 그 request에 대한 response만 전달된다.

결론 : 서버는 클라이언트의 요청에만 응답하므로 단방향성을 갖는 연결 관계라고 할 수 있다.


웹 소켓

웹의 발전하면서, 클라이언트의 요청에 응답만 하는 단방향성이 아닌 양방향성의 웹사이트가 유행하게 되었다.

즉, 클라이언트와 서버의 연결이 항상 유지된다. 연결이 유지된 상태에서 서버 또는 클라이언트상의 이벤트가 발생하면 Event listener에 의해 서버에서 클라이언트로, 또는 클라이언트에서 서버로 데이터의 전달이 이뤄진다. 

이것이 웹 소켓(WebSocket)이다. 아쉬운점은 오래된 브라우저의 경우 지원을 하지 않아 동작하지 않는 문제가 있다.

결론 : 웹소켓은 웹 서버와 웹 브라우저 간의 양방향 통신을 위해 만들어진 프로토콜이다.


socket.io

socket.io는 자바스크립트 모듈로, 양방향 통신이 가능한 웹사이트를 구축하기 위해서 node.js와 함께 사용된다.

웹소켓과 유사하나, 브라우저 간 호환이나 이전 버전 호환을 고려하여 개발된 node.js 모듈이다.


2. socket.io사용법


1) 새 폴더 생성

2) 터미널(또는 CMD)을 열고 1) 폴더 경로로 이동한다.

3) npm init --> package.json이 생성된다.

4) npm install express socket.io --save

5) 에디터(vs code 또는 atom 등등..)으로 열고 1) 경로로 Open.. 한다.

6) index.html과 server.js 파일을 생성한다.


이렇게 하면 세팅이 완료되었다.


server.js부터 작성해보자


먼저, 서버를 생성하고 접속 가능한 코드는 간단하지만 한번 해보면

var app = require('express')();

var http = require('http').Server(app);


app.get('/', function(req, res){

  res.send('<h1>Hello world</h1>');

});


http.listen(3000, function(){

  console.log('server on & port : 3000');

});


이렇게만 작성한 뒤, 터미널에서 node index.js 를 입력하면 생성한 서버가 동작하게 된다.

정상적으로 실행이 되었다면 server on & port : 3000이 뜰 것이다.

그리고 


http://localhost:3000/


으로 접속을 해보면


Hello world가 크게 보인다. 이렇게하면 node.js로 서버를 동작시키는 입문 오브 입문 예제를 완성한 것이다.


이제 socket.io를 사용해서 실시간 채팅을 만들어보려고 한다.























 

Posted by sungho88
,


NetworkBehaviour은 위와 같이 UnityEngine.Networking 클래스를 사용하며 MonoBehaviour을 상속받는다.


따라서, 이것을 사용하기 위해서는 다음과 같이 스크립트 코드를 추가 & 변경해줘야 한다.


using UnityEngine.Networking;

public class Player : NetworkBehaviour {



유니티에서 네트워크 관련 변수 또는 함수 사용을 위해서는 NetworkBehaviour를 사용해야 하기 때문이다.


유니티 네트워크를 사용하여 멀티플레이어 게임을 개발하기 위해서 꼭 필요한 설정이다.


이거 안 하면, 네트워크 관련 코드 그냥 다 못 쓴다.


자세한 목록은 


공식 홈페이지


에서 확인하고, 적절히 사용하도록 하자.

Posted by sungho88
,