LANGUAGE/NODE.JS 2015. 12. 27. 17:15

///// Nodejs (노드제이에스



///// 기본

- 모듈 - 하나의 js 파일은 하나의 모듈, 모듈끼리 접근X, exports로 public접근자처럼 설정이 된다.

require() - 다른 js파일을 불러오기, (기본,확장모듈은 파일명만 적고, 그외는 ./ 또는 ../를 사용한다)

module.exports - 모듈 외부로 노출할 변수를 지정할 때

- 노드 코딩 관례 - http://github.com/issacs/npm/blob/master/doc/cli/coding-style.md)

- 파일 읽기 예제)

var fs = require('fs');

fs.readFile('./test.txt', encoding='utf-8',function(err, data){

if(err) throw err;

console.log(data);

}

 

- WEB Server 예제)

var server = require('http');

server.createServer(function(req, res){

res.writeHead(200, {'Content-Type':'text/plain'});

res.end('Hello World\n');

}).listen(3000, 'localhost');

 

 



///// 기본 모듈

- API문서 참조 : http://nodejs.org/docs/lastest/api/index.html

process

utilities

events

buffers

streams

crypto

tls/ssl

file system

path

net    

udp/datagram sockets

dns

http

https

url

query strings

readline

vm

child processes

assert

tty

zlib

os

cluster

 

 

 

///////////////////////// NPM (Java의 Maven 같은 것)

- 참조 : http://npmjs.org/

- 의존성 라이브러리 관리자

- 중앙저장소에서 확장 모듈을 관리

 

- package.json 

- npm install express -g

- express projectname 

- npm install express jade 

- npm install socket.io



///// jade 뷰 템플릿 엔진 (Java Web의 jsp)

if else

each

include

block

extends

mixin


 

 


///////////////////////// Socket.IO


////////////////////

///// 서버에서 /////

////////////////////

///// 기본 설정

var http = require('http')

,    io = require('socket.io);

var server = http.createServer(function(req,res){});

server.listen(3000);

io = io.listen(server);

io.configure(function(){

io.enable('browser client etag');

io.set('log level', 3);

io.set('transports', ['websocket', 'flashsocket', htmlfile', 'xhr-poling', 'jsonp-polling']);

});

///// 일반 웹소켓으로 클라이언트

io.sockets.on('connection', function(socket){});

 

///// 네임스페이스 웹소켓으로 클라이언트에게 수신받기

var io = io.of('/another').on('connection', function(socket){

socket.send('문자열');

});

 

///// 현재 연결된 소켓을 제외, 서버에 접속한 모두에게 보내기

// socket.broadcast.send();

// socket.broadcast.emit();

// socket.broadcast.to('room name').send();

// socket.broadcast.to('room name').emit();

 

///// 현재 서버에 접속한 모두에게 보내기

// io.sockets.send();

// io.sockets.emit();

// io.sockets.in('room name').send();

// io.sockets.in('room name').emit();

 

///// 저장소(소켓 스토레지 랄까?)

// socket.set('key', 'value', function(){});

// socket.get('key', function(err, data){});

 

///// 방

// socket.join('room name');

// socket.leave('some room');

 

 

 

///////////////////////////////////

///// 서버 & 클라이언트 둘 다 /////

///////////////////////////////////

///// 문자열 보내기

socket.send('문자열');

///// JSON 보내기

socket.json.send({});

///// 자동 JSON 인-디코딩

socket.emit('event name', {});

- 전달 확인 콜백 함수가 특이하다. 서버에서 송신하면 클라이언트의 콜백함수에서 보낸 값을 다시 받아서 출력

///// 휘발성 메세지(전송하고 신경 안씀)

socket.volatile.emit('event name', data);

///// 이벤트

- 기본 예약된 이벤트 message, connect, disconnect, open, close, error, retry, reconnect

- 그외 커스텀 이벤트 가능

// (클라이언트만) 웹소켓 서버에 접속했을 때

socket.on('connect', function(){});

// 웹소켓 서버가 send()한 것 수신

socket.on('message', function(){}); 

 

 

/////////////////////////

///// 클라이언트에서 /////

/////////////////////////

- 기본설정

var socket = io.connect('http://localhost:3000', {

'reconnect':true

,'resource':'socket.io'

});

 

///// 네임스페이스 웹소켓 서버에 접속

var socket = io.connect('/another');

 




///// 참조

http://blog.naver.com/silver889/220055458051
http://blog.naver.com/azure0777/220469049820

http://blog.naver.com/ruleoutlife/90165018945

http://blog.naver.com/the602/220076457120

http://blog.naver.com/solveany/220461729215

http://mudchobo.tistory.com/525

- 게임 (WebSocket기반)

http://browserquest.mozilla.org/


- 웹호스팅

헤로쿠(heroku): http://heroku.com

헤로쿠 사용법 : http://blog.naver.com/clxm300/220109065465

'LANGUAGE > NODE.JS' 카테고리의 다른 글

[Bower] 시작하기  (0) 2016.09.14
[Nodejs] Request to REST API Server  (0) 2016.03.13
[Nodejs] nodemon, supervisor  (0) 2016.01.16
[Nodejs] forever  (0) 2016.01.16
[Nodejs] 최초 설치  (0) 2015.07.21