套接字服务器正在运行但客户端无法连接

时间:2016-06-21 10:24:41

标签: node.js socket.io

我使用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,一切都很好。我还检查了日志文件,没有创建错误。

Client Error

任何人都可以告诉我服务器的设置是真的还是有问题?

2 个答案:

答案 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

我的服务器似乎运行良好。我发布给有像我这样的问题的人,但是如果有人有解释请帮助我。