2016-06-21 107 views
0

我已经建立了Node.js的服务器Socket.io使用HTTPS:套接字服务器在运行,但客户端无法连接

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和我检查内存,VPS的CPU,一切都很好。我也检查了日志文件,没有发现错误。

Client Error

谁能告诉我该服务器的设置是真还是什么问题?

回答

0

一些天研究之后,我不知道为什么,但是当我改变文件/ etc/security/limits的配置时:

* soft nofile 65535 
* hard nofile 65535 
root soft nofile 65535 
root hard nofile 65535 

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

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"); 
}); 
+0

所以我需要需要http呢? 你能解释为什么我需要为socket.io定义一个单独的端口吗?因为如果我设置错了,为什么服务器可以正常运行一段时间? 无论如何,谢谢。我会尝试您的解决方案并尽快反馈。 – Fuyuba

相关问题