函数未被nodejs ws-express在连接处理程序

时间:2017-01-20 12:41:06

标签: node.js express websocket

我在一个swagger-express节点服务器上实现了一个websockets api。 对于websockets我使用express-ws使用优秀的ws库。 但是我遇到了一个问题,即在websocket客户端连接时没有调用函数setInterval。 虽然在ws.on('connection'函数中console.log('websocket connected');确实执行,而setInterval函数没有执行,但令人困惑。 有人可以指出我的代码有什么问题吗?

'use strict';
var SwaggerExpress = require('swagger-express-mw');
var app = require('express')();
module.exports = app; // for testing
var expressWs = require('express-ws')(app);

var IndexWS = require('./api/controllers/indexWS');

var config = {
    appRoot: __dirname // required config
};


app.ws('/', function(ws, req) {

    ws.on('connection', function(conn) {
        console.log('websocket connected');
        setInterval(function timeout() {
            console.log('conn');
        }, 500);

    });

    ws.on('close', function() {
        console.log('The connection was closed!');
    });

    ws.on('error', function() {
        console.log('websocket error!');
    });

    ws.on('message', function(msg) {
        setTimeout(function timeout() {
            ws.send("500 delay");
        }, 500);

    });
    console.log('websocket connected');
});

SwaggerExpress.create(config, function(err, swaggerExpress) {
    if (err) { throw err; }

    // install middleware
    swaggerExpress.register(app);

    var port = process.env.PORT || 3030;
    app.listen(port, '0.0.0.0');

    if (swaggerExpress.runner.swagger.paths['/hello']) {
        console.log('server running on port ' + port );
    }
});

0 个答案:

没有答案