2017-04-18 16 views
0

毎秒WebエンドポイントにデータをポストするWebページを実行したい。下のNodeJSとブラウザJSを使用すると、最初の6つのリクエストに対してうまく同期しているようです。最初の6回のリクエストの後、私はいつかノードにログインしていないブラウザからの送信を見ることができます。最終的に私のブラウザはいくつかの "net :: ERR_EMPTY_RESPONSE"エラーを報告します。setIntervalループを使用してWebページ上のJavaScriptからノードエンドポイントにポストする

NodeJSエンドポイント・コード:Webページから

var express = require('express') 
 
var bodyParser = require("body-parser"); 
 
var cors = require('cors'); 
 
var app = express() 
 

 
app.listen(3000, function() { 
 
    console.log('listening on port 3000') 
 
}) 
 

 
app.use(cors({origin: '*'})); 
 

 
app.get('/', function (req, res) { 
 
    res.send('Hello World!') 
 
}) 
 

 
app.use(bodyParser.urlencoded({ extended: false })); 
 
app.use(bodyParser.json()); 
 
app.post('/',function(request,response){ 
 
    console.log(request.body); 
 
});

testPost.JS:

var num = 0; 
 
var theDate; 
 
var theTime; 
 

 
setInterval(function() { 
 
    theDate = new Date(); 
 
    theTime = theDate.toLocaleTimeString(); 
 
    num++ 
 
    send({Time: theTime, Num : num}); 
 
}, 10000); 
 

 
function send(theData) { 
 
    console.log('Send Function Start: ' + JSON.stringify(theData)) 
 
    $.ajax({ 
 
     url: 'http://localhost:3000', 
 
     dataType: 'json', 
 
     type: 'post', 
 
     contentType: 'application/json', 
 
     data: JSON.stringify(theData), 
 
     processData: false, 
 
     success: function (data, textStatus, jQxhr) { 
 
      console.log('success: ' + JSON.stringify(data)); 
 
     }, 
 
     error: function (jqXhr, textStatus, errorThrown) { 
 
      console.log(errorThrown); 
 
     } 
 
    }); 
 
}

Webページ:

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
 
    <script src="testPost.js"></script> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 
</head> 
 
<body> 
 

 
</body> 
 
</html>

答えて

1

問題がある:

app.post('/',function(request,response){ 
    console.log(request.body); 
}); 

あなたが呼び出すことはありませんので、これは、終了しませんで保留中の要求を作成し、 response.sendまたはresponse.end

ブラウザが保留中の要求をタイムアウトすると、エラーが発生します。

+0

お寄せいただきありがとうございます!私はresponse.endを追加しましたが、応答をまったく変更しませんでした。 app.post( '/'、function(request、response){ console.log(request.body); response.end; }); – Ken

+0

@Kenあなたは** end **関数を呼び出す必要があります。単に 'response.end;'と書くだけで何もしません。 ([express:res.end](http://expressjs.com/de/api.html#res.end)) –

+0

ありがとうございます。次のように更新され、うまくいくように見えます。 response.json({'status': 'ok'}); response.end(); } {0} {0} ); – Ken

関連する問題