반응형
서버프로그램1 예제
- 예제소스1 : http://blog.new-bamboo.co.uk/2009/12/7/real-time-online-activity-monitor-example-with-node-js-and-websocket
서버프로그램2 예제
직접 짠 코드..
그냥 간단히 tcp 통신 테스트용으로 짰다. (1분에 몇번씩 통신이 이뤄지나 확인용)
실행방법은 간단하다. windows 용 node.exe 를 다운받고 node.exe example.js 이런식으로 실행하면 끝!
example.js
function printTimeWithLog(log_string){
var currentTime = new Date();
var currentHour = currentTime.getHours();
if(currentHour < 10){
currentHour="0" + currentHour ;
}
var currentMin = currentTime.getMinutes();
if(currentMin < 10){
currentMin="0" + currentMin ;
}
var currentSec = currentTime.getSeconds();
if(currentSec < 10){
currentSec="0" + currentSec ;
}
var currentMilsec = currentTime.getMilliseconds();
if(currentMilsec < 10){
currentMilsec="00" + currentMilsec ;
}
else if(currentMilsec < 100) {
currentMilsec="0" + currentMilsec ;
}
console.log('[' + currentHour + ':' + currentMin+ ':' + currentSec + ':' + currentMilsec + '] ' + log_string);
}
// Load the net module to create a tcp server.
var net = require('net');
var timeCalc;
var receiveDataCnt = 0;
var receiveDataRead = 0;
var curReceiveDataRead = 0;
function calcTotalReceive(){
setTimeout(function () {
printTimeWithLog("receive total count : " + receiveDataCnt);
printTimeWithLog("receive total size (byte) : " + (curReceiveDataRead - receiveDataRead));
//process.exit(0);
receiveDataRead = curReceiveDataRead;
receiveDataCnt = 0;
calcTotalReceive(); // timer reset
}, 60 * 1000);
}
var test=0;
// Setup a tcp server
var server = net.createServer(function (socket) {
// Every time someone connects, tell them hello and then close the connection.
socket.addListener("connect", function () {
printTimeWithLog("Connection from " + socket.remoteAddress);
//socket.write("hello!");
//socket.end("Hello World\n");
//socket.end();
receiveDataCnt = 0;
receiveDataRead = curReceiveDataRead = 0;
calcTotalReceive();
});
socket.addListener("receive", function (data) {
//printTimeWithLog("receive from " + socket.remoteAddress + ":" + data);
receiveDataCnt ++;
curReceiveDataRead = socket.bytesRead;
//printTimeWithLog("receive total " + receiveDataCnt);
});
socket.addListener("data", function (data) {
//printTimeWithLog("receive from " + socket.remoteAddress + ":" + data);
//socket.write(data);
receiveDataCnt ++;
curReceiveDataRead = socket.bytesRead;
if (test%2)
console.log('.');
else
console.log('*');
test++;
//printTimeWithLog("receive total " + receiveDataCnt);
});
socket.addListener("close", function () {
printTimeWithLog("close from " + socket.remoteAddress);
//socket.write("goodbye\r\n");
//socket.close();
});
socket.addListener("eof", function () {
printTimeWithLog("eof from " + socket.remoteAddress);
socket.write("goodbye\r\n");
socket.close();
});
});
server.listen(8000,'192.168.1.3');
printTimeWithLog('create server... wait for connect');
개인적인생각
싱글쓰래드 기반 의 비동기 io 이벤트 방식으로 속도 및 리소스 측면에서 유리하단건 개인적인 테스트입장에서는 별로 채감하지 못하겠다.
하지만 개발자 측면의 장점은...
각종 테스트용 서버프로그램을 짤때.. 컴파일 없이 바로 script 를 구현하여 서버를 구축할수있다니 얼마나 간단한 일인가?!?!
서버 프로그램을 수정하여 재컴파일 할필요도 없고, 그냥 스크립트만 수정하여 돌리면 되니 말이다.
어째튼 node.js 는 새로운 트랜드이라고 하니 한번 맛뵈기로 사용해보는것도 좋을듯하다.
반응형