2017-11-08 9 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オブジェクトを作成しようとしたときにできないことです。ここに私が受け取っているエラーがあります。期待通りにWebサービスが起動されていないようだし、Web 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をせずに、自分のWebサービスを呼び出すための別の方法を試してみました。

+1

のXMLHttpRequestは、ブラウザのAPIである:あなたはrequesthttps://github.com/request/request

ノード用に別のxmlhttprequestパッケージもありのような要求のための任意のノードパッケージを使用することができます。ここでは、これをノードアプリケーションで使用しています。私はそれを別にインストールするか、リクエストライブラリを使って何をする必要があると思います。 404は見つからないエラーなので、作成したURLが正しいことを確認してください。 httpモジュールノードを使用してみてください – Jackthomson

答えて

2

XMLHttpRequestは、ノードのデフォルトパッケージではありません(ご使用のサーバーがnode.jsを使用していると思います)。 https://www.npmjs.com/package/xmlhttprequest

+0

実際には2番目のオプションはうまく動作しています – 118218

+0

あなたの質問に答えた場合、回答を受け入れたものとしてマークすることをお勧めします –

関連する問題