【问题标题】:Node.js freeze after a few requestsNode.js 在几个请求后冻结
【发布时间】:2016-06-17 23:00:29
【问题描述】:

我正在尝试使用 nodejs 和 socket.io

但我的应用程序在几次请求后拒绝工作。这需要一段时间,一段时间后它又开始工作了。

这是 nodejs-server 的代码,我预计会出现问题。

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);

该应用程序用于监控整个 webstack 中的错误。

【问题讨论】:

  • 任何与您的问题相关的代码都必须您的问题中,而不仅仅是链接。链接腐烂,使问题及其答案对未来的人们毫无用处,人们不应该遵循一些随机链接来帮助你。如果这个问题没有意义并且没有链接就无法回答,那么它不适合这个网站。而是将minimum complete example 放在问题中。
  • POST /api/error 的处理程序没有结束请求(通过发回响应)。
  • @robertklep 哇真棒。这就是错误:) 你很棒。

标签: javascript angularjs node.js socket.io


【解决方案1】:

POST /api/error 的处理程序没有发回响应,因此客户端将继续等待。在某些时候,它可能决定在之前的连接得到应答(或超时)之前不再打开与服务器的任何连接。

您可以只发回 200 响应:

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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 2018-07-06
    • 2017-03-26
    • 2021-06-14
    • 2016-12-21
    • 2011-10-02
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多