【发布时间】:2013-11-21 21:43:18
【问题描述】:
我正在不同的端口上启动两个不同的节点服务器,但我仍然收到以下错误。
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);
...
不确定如何修复此错误。
【问题讨论】:
-
我个人从来没有遇到过这个问题,但问题似乎是由 socket.io 启动的闪存策略服务器。如果您不使用闪存传输,或者如果您要运行自己的策略服务器,则可以禁用它。否则,您可以为每个应用程序配置其端口,或者根据文档,将 -1 作为策略服务器端口选项传递,以告诉 Flash 客户端通过与应用程序相同的端口进行连接。更多信息可以在 socket.io wiki configuring section 中找到
标签: javascript node.js express socket.io