我使用HTTPS设置了一个带有Socket.io的Node.js服务器:
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('commercial.key', 'utf8'),
cert: fs.readFileSync('commercial.crt', 'utf8'),
ca: fs.readFileSync('ca_chain.crt', 'utf8')
};
var server = https.createServer(options, app);
server.listen(3000);
var io = require('socket.io').listen(server);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(client){
//console.log('IO Connection');
var socket_id = client.id;
console.log(socket_id + " connected");
});
启动此服务器后,它运行正常。客户端可以连接到它。但是,几个小时后,新客户端无法连接,但旧客户端 - 之前连接的客户端 - 仍然可以与服务器进行交互。
我只有大约200 ccu,我检查了RAM,VPS的CPU,一切都很好。我还检查了日志文件,没有创建错误。
任何人都可以告诉我服务器的设置是真的还是有问题?
答案 0 :(得分:0)
您必须为socket.io
定义一个单独的端口 var socket_con = http.createServer(function(socket) {
console.log("socket created=====");
console.log(socket);
}).listen(8000);
//套接字超时配置
var mobileData ={ log: true , "close timeout": 120 , "heartbeat timeout": 120 , "heartbeat interval": 30 , "transports": ["websocket"],'disconnected':true};
//套接字定义
io.listen(socket_con, mobileData).on('connection', function(client){
//console.log('IO Connection');
var socket_id = client.id;
console.log(socket_id + " connected");
});
答案 1 :(得分:0)
经过几天的研究,我不知道为什么,但是当我更改文件/ etc / security / limits的配置时,这样:
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
我的服务器似乎运行良好。我发布给有像我这样的问题的人,但是如果有人有解释请帮助我。