如何在一台计算机上启动多个节点/套接字服务器

时间:2013-11-21 21:43:18

标签: javascript node.js express socket.io

我在不同的端口上启动两个不同的节点服务器,但我仍然收到以下错误。

info  - socket.io started
info  - FlashPolicyFileServer received an error event:
    listen EADDRINUSE

这就是我启动第一台服务器的方式:

"use strict";

var 
    express = require('express'),
    app = module.exports = express();

// set some config vars

var 
    server = require('http').createServer(app),
    socket = require('./app/lib/socket');

// these settings are common to both environments
app.configure(function () {
    // configuration left out
    app.use(app.router);

});

//  Load the routing
require('./app/routes')(app);
// run the server with socket.io
server.listen(3001);
socket.listen(server, session, app);

我以完全相同的方式启动第二台服务器,但第二行最后一行更改为:

server.listen(3002);

socket.io在另一个文件中以这样的方式启动

exports.listen = function (server, sessionStore, app) {
    var io = require('socket.io').listen(server);
    ...

不确定如何解决此错误。

1 个答案:

答案 0 :(得分:1)

Flash策略端口默认为10843,因此两个应用程序都会尝试从此端口运行它,这是您遇到的错误。删除传输,或使用

设置端口
io.set('flash policy port', 3005)

或者您可以完全删除该传输:

io.set('transports', [
    'websocket',
    'xhr-polling',
    'htmlfile',
    'jsonp-polling'
]);