반응형

try {

        var xml2js = require('xml2js');

        var request = require('request');

        

        var url = 'URL주소'; 

        var parser = new xml2js.Parser();

        request(url, function(error, response, body) {

          parser.parseString(body, function(err,result){

            

            console.log(result);

            });

        });

      } catch (ex) {console.log(ex)}

반응형
,
반응형

Mysql Pool

이번에 사용 하는 클라우드 서버는 
Mysql 설정 파일을 바꿔도 윗단에서 커넥션을 빠르게 끊어버리는 바람에 문제가 되었습니다. 

맨 처음에는 setInterval와 end 함수의 콜백을 이용해 특정 시간이 될 때마다 
커넥션을 모두 끊고 다시 연결을 만들도록 했었는데요. 
그래도 어느 순간이 되면 커넥션 에러가 발생 했습니다. 

다음 시도는 Mysql-simple-pool모듈을 사용 하는 것이었습니다. 
저번에 Mysql-simple-pool에 관해 포스팅을 한 적이 있었죠. 
그런데 사용시 전에는 없었던 문제가 생겼습니다. 그것은 쿼리를 처음 할 땐 에러가 난다는 것이었죠. 
쿼리를 몇 번 하고 나서야 에러가 안나고 잘 처리 되었습니다. 

여러가지 해결 방법을 찾아보다가 Mysql모듈도 Pool을 지원한다는 사실을 알게 되었습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var mysql = require('mysql');
 
var mysqlConfig = {
  host:       "아이피",
  port:       "포트",
  user:       "아이디",
  password:   "암호",
  database:   "데이터베이스"
  };
 
var pool= mysql.createPool(mysqlConfig);
 
    pool.getConnection(function(err,connection){
        connection.query("쿼리",function(err,rows){
        //rows를 처리할 내용
        //release를 해주어 커넥션이 pool로 되돌아 갈 수 있도록 해줍니다.
        connection.release();
        //이제 이 커넥션은 pool로 돌아가 다른 주체가 사용 할 수 있도록 준비합니다.
        });
    });
 
//추가사항 : 이렇게 해줘도 끊기는 현상이 발생 할 때가 있었습니다.
//이건 최후의 방법인데 특정 시간마다 연결했다 끊는겁니다.
//저는 결국 이 방법으로 해결했습니다.
 
function keepAlive(){
   pool.getConnection(function(err, connection){
     if(err) { return; }
     connection.ping();
     connection.release();
   });
 
    //redis client를 사용중이라면, 아마 Redis연결도 빠르게 끊길겁니다.
    //client.ping();  // 라고 해주면 Redis연결도 유지합니다.
 }
 setInterval(keepAlive, 60*1000);



출처: http://blog.mygentle.com/2013/11/nodejs-mysql.html

반응형
,
반응형

이번엔 http모듈에서 get 파라미터와 post 의 데이터 값을 구하는 예제 입니다. 



1. Get 파라미터 구하기 

server.js 소스

1
2
3
4
5
6
7
8
9
10
11
<span style="font-size: 10pt;">var http = require("http");
var url = require("url");
 
http.createServer(function(req, res) {
    var query = url.parse(req.url, true).query;
    console.log(query);
 
}).listen(8080, function(){
    console.log("server running");
});
</span>

브라우져로 url에 파라미터를 주면 ? 이후부터 json방식으로 콘솔에 찍힙니다.  

브라우져 접속 예) http://127.0.0.1:8080?titleId=597447&weekday=sat


콘솔창에 다음과 같이 나옵니다. 



2. post 값 구하기 

    post는 form 이 필요하기 때문에 html 파일이 필요합니다. 


server.js 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<span style="font-size: 10pt;">var http = require("http");
var fs = require("fs");
 
http.createServer(function(req, res) {
     if(req.method == 'POST'){
        req.on('data', function (data) {
            console.log(data.toString());
        });
     }
     fs.readFile(__dirname + '/'+ req.url +'.html', function (err, data) {
            res.writeHead(200, { 'Content-Type': 'text/html'});
            res.end(data);
        });
}).listen(8080, function(){
    console.log("server running");
});
</span>


post.html 파일 소스

<html>

    <head>

        

    </head>

    <body>

        <form method="post">

            <input type="text" name="id"/>

            <input type="password" name="password"/>

        

            <input type="submit"/>

        </form>

    </body>

</html>


해당 파일을 실행후 브라우저에 http://127.0.0.1:8080/post  로 접속 후 form 에 데이터를 넣은후 제출 버튼을 눌러주면 서버의 콘솔에 해당 값이 찍힙니다. 



출처: http://uiandwe.tistory.com/953


반응형
,