2016-06-21 3 views
0

내가 설정 Socket.io 사용하여 HTTPS와 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, CPU VPS 확인, 모두 괜찮습니다. 또한 로그 파일을 확인했지만 오류가 발견되지 않았습니다.

Client Error

누구나 서버의 설정이 true 또는 어떤 문제가 있음을 말해 줄 수?

답변

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

관련 문제