我最近收到了运行Node.js的网站的大量流量.随着流量的增加,它已经开始大量崩溃,这在以前从未发生过.我在日志中收到以下错误:
{ [Error: connect EMFILE] code: 'EMFILE', errno: 'EMFILE', syscall: 'connect' }
Error: connect EMFILE
at errnoException (net.js:670:11)
at connect (net.js:548:19)
at net.js:607:9
at Array.0 (dns.js:88:18)
at EventEmitter._tickCallback (node.js:192:40)
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会崩溃?和想法如何解决?
我正在使用Express.js和Socket.io.它运行在Ubuntu上.
我试图从HTTP URL解析XML文件.如果XML提取时间超过此时间,我想配置15秒的超时,我想报告超时.出于某种原因,setConnectTimeout和setReadTimeout不起作用.这是代码:
URL url = new URL("http://www.myurl.com/sample.xml");
URLConnection urlConn = url.openConnection();
urlConn.setConnectTimeout(15000);
urlConn.setReadTimeout(15000);
urlConn.setAllowUserInteraction(false);
urlConn.setDoOutput(true);
InputStream inStream = urlConn.getInputStream();
InputSource input = new InputSource(inStream);
Run Code Online (Sandbox Code Playgroud)
我正在捕捉SocketTimeoutException.
谢谢克里斯
我正在尝试使用以下方式开始提供一些静态网页connect:
var connect = require("connect");
var nowjs = require("now");
var io = require("socket.io");
var app = connect.createServer(
connect.static(__dirname + '/public')
);
app.listen(8180);
Run Code Online (Sandbox Code Playgroud)
所以我在文件所在的同一目录index.html下的/public目录中添加了一个简单的app.js文件,但是当我尝试在浏览器上查看该页面时,我从节点获得了这个响应:
不能获取 /
我做错了什么以及如何纠正它?
Connect/Express捆绑了两个与会话相关的中间件.有什么不同?我该如何选择?
我假设会话中间件与cookieSession中间件相同,但具有额外的存储机制.
有人可以告诉我建议的(最新的)方式来获取明确的POST表格数据.
如此多的教程/帖子等谈论bodyParser,但这不再与Express捆绑,其他博客等建议直接使用urlencoded,但现在这也不可用.
试图找到有关这些框架或技术的准确信息正在努力.
BTW我感兴趣的是非常简单和小型的数据
我正在开发一个应用程序,我认为我想做的是从android中的服务器数据库接收数据.所以我开始运行一些教程.我找到了一个正在做我想要的东西.但我得到:
detailMessage "failed to connect to localhost/127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)" (id=830021648792)
Run Code Online (Sandbox Code Playgroud)
本教程的整个代码在这里链接
发生错误:
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
我查了一下:
http://localhost:8080/Requestor/RQSRV
- servlet正在运行我的配置:
我想知道nodejs的Error对象在错误处理中使用哪些函数表示公开?
一个console.log错误的电话new Error('NotFound')时只显示[Error: NotFound],这是因为.toString()方法重写?如何找到这些对象暴露的属性和函数?
我目前正在尝试为我的node.js应用程序设置一个基本身份验证系统.目前我使用express(3.0.0rc5),passport(0.1.12)和socket.io(0.9.10)与Mongoose作为会话数据存储.我也一直在玩,everyauth但我不喜欢与承诺合作.
现在的情况:
通过护照进行身份验证(Facebook策略)是成功的,session.sid在重定向后在客户端上设置了cookie,我能够在我的数据库中看到会话文档.我可以在访问会话cookie socket.io通过socket.handshake.headers.cookie.
如果我正确理解了护照概念,则在authentication passport.serializeUser调用成功后,我可以向会话添加信息.在我的情况下,最重要的信息是电子邮件,所以我按以下方式设置序列化程序:
passport.serializeUser(function(user, done) {
done(null, user.email);
});
Run Code Online (Sandbox Code Playgroud)
现在,我必须在socket.io事件中仅使用cookie信息从会话中提取电子邮件地址.
var connect = require('connect'),
parseSignedCookie = connect.utils.parseSignedCookie,
cookie = require('express/node_modules/cookie');
io.on('connection', function(socket) {
if(socket.handshake.headers.cookie) {
var cookie = cookie.parse(socket.handshake.headers.cookie);
var sessionID = parseSignedCookie(cookie['connect.sid'], 'secret');
}
});
passport.deserializeUser(function(id, done) {
// so, what is supposed to be done here?
});
Run Code Online (Sandbox Code Playgroud)
因此,如果我没有弄错,现在可以使用任务deserializeUser来访问相应的电子邮件地址.
我该怎么办?任何指针都非常感谢.
我编写了一个小型node.js应用程序,使用Connect,提供网页,然后定期发送更新.它还接受用户观察并将其记录到磁盘文件中.
只要我在localhost上它就可以正常运行,但是我无法让同一个内部网上的其他计算机看到它.我使用的是端口3000,但更改为端口8080或80没有帮助.
这是我用来建立连接的代码:
var io = require('socket.io'),
connect = require('connect');
var app = connect().use(connect.static('public')).listen(3000);
var chat_room = io.listen(app);
Run Code Online (Sandbox Code Playgroud)
如上所述,我尝试将端口号更改为8080或80,并没有看到任何差异,所以我不认为这是防火墙问题(但我可能是错的).在阅读了与HTTP相关的类似问题之后,我还想到将1.0.0.0添加到listen()但是看起来listen()似乎不接受IP掩码参数.
我正在尝试使用SQLDeveloper连接到数据库,我收到以下错误:
An Error was Encountered performing The requested operation:
IO Error: Conection reset
Vendor code 17002.
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗?
connect ×10
node.js ×6
express ×5
java ×2
javascript ×2
socket.io ×2
android ×1
database ×1
exception ×1
http ×1
middleware ×1
passport.js ×1
servlets ×1
session ×1
timeout ×1