harmoniemand
harmoniemand

Reputation: 259

Node.js freeze after a few requests

I am trying around with nodejs and socket.io

But my application refuses to work after a few requests. It takes a while and after some time it starts working again.

Here is the code for the nodejs-server, where i expect the issue.

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('db.sqlite');
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 8080;

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var router = express.Router();

router.post('/', function (req, res) {
    res.sendFile(__dirname + "/app/index.html");
});
router.get('/sample', function (req, res) {
    res.sendFile(__dirname + "/app/sample.html");
});
router.post('/api/error', function (req, res) {
    var data = req.body;
    data.date = Date();
    io.emit('error', JSON.stringify(data));
    res.header("Access-Control-Allow-Origin", "*");
});

io.on('connection', function(socket){
  console.log('a client connected');
});

app.use('', router);
app.use(express.static('app'));
app.use('/static', express.static('node_modules'));

// START THE SERVER
server.listen(port);
console.log('Magic happens on port ' + port);

The applikation is for monitoring errors in a full webstack.

Upvotes: 1

Views: 3208

Answers (1)

robertklep
robertklep

Reputation: 203231

The handler for POST /api/error isn't sending back a response, so the client will continue to wait. At some point, it may decide not to open any more connections to the server until the previous ones have been answered (or have timed out).

You can just send back a 200 response:

router.post('/api/error', function (req, res) {
    var data = req.body;
    data.date = Date();
    io.emit('error', JSON.stringify(data));
    res.header("Access-Control-Allow-Origin", "*").sendStatus(200);
});

Upvotes: 5

Related Questions