2016-05-11 2 views
0

Я получаю следующее сообщение об ошибкеRangeError nodejs Socket.io

RangeError: Maximum call stack size exceeded 
    at TCP.hasOwnProperty (native) 
    at _hasBinary (/usr/local/lib/node_modules/socket.io/node_modules/has-binary/index.js:49:45) 

app.js

var express = require('express'); 
var app = express(); 
// var responseHandlerRouter = require('./routes/responseHandlerRouter.js'); 

routes = require('./routes'); 

var server = app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

io = require('/usr/local/lib/node_modules/socket.io').listen(server); 

app.use('/', routes(io)); 

route.js

var express = require('express'); 
var router = express.Router(); 


module.exports = function (io) { 

    // all of this router's configurations 



    router.post('/paymentResponse', function (req, res, next) { 
    io.sockets.emit('notification', res); 
    res.end('well finally I am here'); 
}); 


    return router; 

} 

index.html

<!doctype html> 
<html> 
    <head> 
     <script src="http://127.0.0.1:3000/socket.io/socket.io.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.js"></script> 

     <script> 

     var socket = io.connect('http://localhost:3000'); 

     socket.on('notification', function (data) { 
      console.log(data); 
     }); 
     </script> 
    </head> 
    <body> 
     <ul id='messages'></ul> 
    </body> 
</html> 

Когда я отправляю к URL http://localhost:3000/paymentResponse, я получаю эту ошибку в терминале запуска сервера nodejs.

ответ

0

Вы сериализуете весь объект ответа (ваш аргумент res), что может вызвать переполнение стека из-за циклических ссылок. Не сериализуйте весь объект ответа, но вишня выбирает нужные вам свойства.

+0

Так что я не смогу передать весь ответ как json? – Ajeesh

+0

Что вы пытаетесь достичь? Объект ответа не предназначен для отправки. Он инкапсулирует ответ сервера и предназначен для настройки ответа HTTP, находящегося внутри обработчика запросов. –