복붙노트

[REDIS] 어떻게 소켓을 확인하는 방법은 여러 노드와 socket.io - 레디 스와 socket.io에 살아 (연결)이다

REDIS

어떻게 소켓을 확인하는 방법은 여러 노드와 socket.io - 레디 스와 socket.io에 살아 (연결)이다

나는 여러 노드, socket.io - 레디 스와의 nginx와 socket.io를 사용하고 있습니다. 나는이 가이드를 따르 http://socket.io/docs/using-multiple-nodes/

내가 할 노력하고 있어요 : 함수 (서버 사이트)에서, 내가 원하는 쿼리에이 소켓이 연결되어 있는지 socketid 또는 분리에 의해

I는 ( '네임'). 현재 프로세스 (그것이 단지 현재 프로세스를 확인할 수 있음을 의미)에 대한 [socketid, 단지 일 io.of 접속을 시도했다.

누구든지 나를 도울 수 있습니까? 사전에 감사합니다.

해결법

  1. ==============================

    1.당신이 말했듯이, 별도의 프로세스 수단은 소켓은 그들이 처음에 연결하는 과정에 등록됩니다. 당신은 함께 모든 노드를 연결하는 socket.io - 레디 스를 사용할 필요가 있고, 당신이 할 수있는 각 노드가 고객 모두의 업데이트 된 실시간 목록이 그래서 이벤트를 때마다 클라이언트가 연결 / 연결 해제를 방송한다.

    당신이 말했듯이, 별도의 프로세스 수단은 소켓은 그들이 처음에 연결하는 과정에 등록됩니다. 당신은 함께 모든 노드를 연결하는 socket.io - 레디 스를 사용할 필요가 있고, 당신이 할 수있는 각 노드가 고객 모두의 업데이트 된 실시간 목록이 그래서 이벤트를 때마다 클라이언트가 연결 / 연결 해제를 방송한다.

  2. ==============================

    2.여기 확인

    여기 확인

    당신이 사용해야 위에서 언급 한대로 여러 노드에서 작업을 얻을 수 socket.io을-레디 스.

    var io = require('socket.io')(3000);
    var redis = require('socket.io-redis');
    io.adapter(redis({ host: 'localhost', port: 6379 }));
    
  3. ==============================

    3.저도 같은 문제가 내 편의에 어떤 솔루션을했다. 그래서 내가 사용할 수있는 다른 방법과 변수를 확인하기 위해 클라이언트의 로그를했다. 연결 "개방 / 폐쇄"및 연결의 폐쇄를 캡처 client.onclose () 기능의 상태에 대한 client.conn.readystate 속성이있다.

    저도 같은 문제가 내 편의에 어떤 솔루션을했다. 그래서 내가 사용할 수있는 다른 방법과 변수를 확인하기 위해 클라이언트의 로그를했다. 연결 "개방 / 폐쇄"및 연결의 폐쇄를 캡처 client.onclose () 기능의 상태에 대한 client.conn.readystate 속성이있다.

    const server = require('http').createServer(app);
    const io = require('socket.io')(server);
    let clients = [];
    io.on('connection', (client)=>{
        clients.push(client);
        console.log(client.conn.readyState);
        client.onclose = ()=>{
            // do something
            console.log(client.conn.readyState);
            clients.splice(clients.indexOf(client),1);
        }
    });
    
  4. from https://stackoverflow.com/questions/29390562/how-to-check-socket-is-alive-connected-in-socket-io-with-multiple-nodes-and-so by cc-by-sa and MIT license