我有一个节点+套接字服务器正在运行,只是向客户端发送。客户端位于https域名上。几个小时后,我的套接字服务器开始记录{ [Error: getaddrinfo EADDRINFO] code: 'EADDRINFO', errno: 'EADDRINFO', syscall: 'getaddrinfo', fatal: true }
终止所有websocket连接,并且在我重新启动运行服务器的脚本之前没有得到纠正。我重新启动服务器脚本后,一切都很好,持续2-3个小时。
负载很低,只有我在网络浏览器中打开10 - 30个标签。
我已经搜索了所有这些以及其他问题25684451,12565209和29536649。
正如我所提到的,我的域名是https://redacted.com,因此我认为套接字服务器需要也是https,这就是我构建它的方式。
是硬件吗? Ubuntu的开放文件限制? https问题? DNS路由问题?插座连接限制?我怎么测试?
Ubuntu 14.04,nodeJS v0.10.25,Socket.io 1.3.6。在AWS t2.micro进行测试。
服务器:
var https = require('https'),
fs = require('fs'),
mysql = require('mysql');
var options = {
key: fs.readFileSync('/etc/ssl/certs/key2/redacted.key'),
cert: fs.readFileSync('/etc/ssl/certs/key2/STAR_redacted_com.crt'),
ca: fs.readFileSync('/etc/ssl/certs/key2/redacted.ca-bundle')
};
var app = https.createServer(options);
var client = require('socket.io').listen(app); //socket.io server listens to https connections
app.listen(8080);
var connected = 1;
client.on('connection', function(socket){
function sendStatus(s){
socket.emit('status', s);
}
sendStatus('Connected');
console.log(connected);
connected++;
});
客户端:
try{
var socket = new io.connect('ws.redacted.com:8080');
//var socket = io.connect('ws.redacted.com:8080');
console.log(socket);
}catch(e){
//set status to warn user
console.log('3');
console.log(e);
}