2013-02-16 1 views
9

사용자가 지속적으로 연결되어야하는 웹 응용 프로그램이 있습니다. 기본적으로 socket.io는 60 초 후에 연결을 끊습니다. 나는 '재 연결'을 켜기 때문에 매분마다 연결을 닫고 다시 엽니 다. 이로 인해 연결된 클라이언트에 대한 피드/알림에 문제가 발생할 수 있습니다. 이 제한 시간을 설정하여 10 분 또는 그 이상으로 설정하는 것이 안전할까요? 그게 지금 당장 낮은 이유가 있니?socket.io에 높은 닫기 시간 제한을 설정하는 것이 안전합니까?

답변

3

나는 소켓이 60 초 후에 연결이 끊어지지 않을 것이라고 생각하지 않습니다. 나는 그것이 실제로 일어나고 있는지 조사 할 것이다. 핸드 셰이 킹을 올바르게 수행 한 후에는 클라이언트 또는 서버가 연결을 종료 할 때까지 소켓이 하트 비트를하고 무기한으로 열려 있어야합니다 (네트워크 문제가 발생하지 않음). 이는 확실히 내 경험입니다.

실제로 핸드 셰이크가되지 않거나 하트 비트가 수신되지 않는 것처럼 연결이 실제로 종료된다는 사실.

10

제 생각에 'close timeout' 구성을 잘못 해석 한 것 같습니다. 60 초 후에 연결이 닫히지 않습니다. (클라이언트가 끊임없이 다시 연결되면 하트 비트는 무의미합니다.)

클라이언트가 연결을 끊으면 close timeout은 서버가 해당 연결과 관련된 리소스를 해제하기 전에 대기하는 시간입니다. 본질적으로 이는 간헐적 인 연결 문제가있는 클라이언트가 서버가 서버를 잊어 버리기 전에 다시 연결을 시도 할 수있게합니다. 서버 리소스를 묶어주기 때문에 close timeout을 10 분으로 설정하는 것은 나쁜 생각 일 수 있습니다.

클라이언트가 실제로 60 초마다 연결을 끊으면 samjm이 말한 것처럼 다른 점이 있습니다.

0

이미 알았을 지 모르지만 하트 비트 ("2 ::")를 서버로 다시 보내지 않으므로 소켓이 60 초 후에 연결이 끊어 질 수 있습니다.

다음은 websocket client module과 작동하는 일부 Python 코드입니다.

# on_message handles messages from the server 
def on_message(ws, message): 
    if message[:3] == '2::': 
     ws.send('2::') 
관련 문제