2017-11-08 8 views
0

Socket.io 서버에서 메시지를받은 후에 데이터베이스에 메시지를 저장하려고합니다. 여기 내 이벤트가 Socket.i O 서버 측에서 같은 모습입니다 : 첫 번째 부분은 잘 작동Socket.io 이벤트에서 RESTful API 서비스를 호출하는 방법은 무엇입니까?

socket.on('send_msg_to_user', function (data) { 
    console.log('-------------send_msg_to_user------------------'); 
    if(data.type == "provider"){ 
     io.sockets.in("user_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message}); 
    }else if(data.type == "user"){ 
     io.sockets.in("provider_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message}); 
    } 
    console.log('-------------save_message_to_database------------------'); 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://165.227.33.135/message/save?user_id=218&provider_id=206&message=hrthtrhtr&type=up&request_id=899", false); 
    xhr.send(); 
}); 

. 문제는 XMLHttpRequest 객체를 만들려고 할 때 가능하다는 것입니다. 내가받는 오류는 다음과 같습니다. 이 예상대로 웹 서비스가 트리거되지 않는 것 같습니다 및 웹 API는 기본 404 오류가 반환이 경우

socket.on('send_msg_to_user', function (data) { 
    console.log('-------------send_msg_to_user------------------'); 
    if(data.type == "provider"){ 
     io.sockets.in("user_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message}); 
    }else if(data.type == "user"){ 
     io.sockets.in("provider_" + data.user_id + "_" + data.provider_id).emit('new_msg', {msg: data.message}); 
    } 
    console.log('-------------save_message_to_database------------------'); 
    url = 'http://165.227.33.135//message/save?user_id=' + data.user_id 
     + '&provider_id=' + data.provider_id 
     + '&message=' + data.message 
     + '&type=' + data.type 
     + '&request_id=' + socket.reqid; 
    request(url, function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      console.log(body); 
     } 
    }); 
}); 

:

ReferenceError: XMLHttpRequest is not defined

는 또한 XMLHttpRequest를하지 않고, 내 웹 서비스를 호출하는 또 다른 방법을 시도 .

+1

XMLHttpRequest의 브라우저의 API에 : 당신은 또한 노드에 대한 별도의 xmlhttprequest 패키지가 requesthttps://github.com/request/request

같은 요청에 대해 노드 패키지를 사용할 수 있습니다. 여기에서는 노드 응용 프로그램에서이를 사용하고 있습니다. 별도로 설치하거나 요청 라이브러리를 사용하여 수행해야 할 필요가 있다고 생각합니다. 404 오류가 없으므로 작성한 URL이 올바른지 확인하십시오. http 모듈 노드를 사용하여 시도하십시오 – Jackthomson

답변

2

XMLHttpRequest은 노드의 기본 패키지가 아닙니다 (서버에서 node.js를 사용하고있는 것 같습니다). https://www.npmjs.com/package/xmlhttprequest

+0

와 함께 제공됩니다. 실제로 두 번째 옵션이 잘 작동합니다. – 118218

+0

질문에 대답 할 때 대답을 승인 된 것으로 표시하는 것이 좋습니다. –