원격 서버에 TCP 연결

존슨 오그 우루

저는 TCP 및 서버 연결 관련 문제에 대해 꽤 익숙합니다. 저는 서버에 연결된 사용자의 포트가 열려 있는지 또는 닫혀 있는지 확인하고 프런트 엔드에 메시지를 표시 할시기를 결정하고 포트 상태를 알리는 기능을 구현하는 작업을 맡았습니다.

너무 많은 연구 끝에 나는이 연결을 만드는 방법을 여전히 알 수 없으며, 기능이 프론트 엔드에서 실행되어야하므로 더 어려워집니다. 나는 백엔드에서 이와 동일한 기능을 구현하려고 시도 했으며이 npm 패키지로 내가 원하는 것을 얻을 수있었습니다 . 그러나이 net패키지는 NodeJ 패키지에 의존 하기 때문에 클라이언트 측에서 사용할 수 없습니다.

WebSockets 및 이미지로 일부 사용자 지정 함수를 구현했지만 연결 상태를 가져 오는 대신 브라우저에서 항상 net:: ERR_EMPTY_RESPONSE오류가 발생합니다.

다음은 문제가 무엇인지 파악하기 위해 지금까지 작성한 코드 중 일부입니다. 나는 올바른 방향으로 지적되어 정말 감사하겠습니다. 감사합니다

export const checkSocketIoConnect = (url, timeout) => {
    return new Promise(function(resolve, reject) {
        let errAlready = false;
        timeout = timeout || 50000;
        let socket = io(url, {
            transport: ['websocket'],
            reconnection: true, timeout: timeout, reconnectionDelay: 1000,
            reconnectionAttempts: 50,
            rejectUnauthorized: false
        });

        // success
        socket.on('connect', function() {
            console.log('connecting succesfulyy');
            clearTimeout(timer);
            resolve();
            socket.close();
        });

        // set our own timeout in case the socket ends some other way than what we are listening for
        let timer = setTimeout(function() {
            console.log('timer');
            timer = null;
            error('local timeout');
        }, timeout);

        // common error handler
        const error = (data) => {
            console.log('errrror');
            if (timer) {
                clearTimeout(timer);
                timer = null;
            }
            if (!errAlready) {
                errAlready = true;
                reject(data);
                socket.disconnect();
            }
        };

        // errors
        socket.on('connect_error', error);
        socket.on('connect_timeout', error);
        socket.on('error', error);
        socket.on('disconnect', error);

    });
};
export const newPortChecker = (url) => {
    let websocket = new WebSocket(url);
    // websocket.send('pinging server');
    websocket.onopen = function(event) {
        setInterval(() => {
            websocket.send('ping');
        }, 30000);
        console.log(event);
    };

    websocket.onmessage = function(event) {
        console.log(event.data);
    };

    websocket.onerror = function(event) {
        console.log(event);
    };

    websocket.onclose = function(event) {
        console.log(event);
    };
};
export const portChecker = (cb, host, port, timeout) => {
    let timeouts = (timeout == null) ? 100 : timeout;
    let img = new Image();

    img.onerror = function() {
        if (!img) return;
        img = undefined;
        console.log('open');
        cb('open');
    };

    img.onload = img.onerror;
    img.src = 'https://' + host + ':' + port;

    setTimeout(function() {
        if (!img) return;
        img = undefined;
        console.log('closed');
        cb('closed');
    }, timeouts);
};
존슨 오그 우루

내가 찾은이 패키지를 사용하여이 문제를 해결할 수있었습니다. 패키지는 DOM의 이미지를 사용합니다. 나중에이 문제를 해결하려는 모든 사람을위한 것입니다. https://github.com/ItsAsbreuk/itsa-browser-portscan

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

TcpClient를 원격 Tcp 서버에 연결하여 특정 로컬 포트에 바인딩

분류에서Dev

원격 mysql db 서버에 연결

분류에서Dev

원격 mysql 서버에 연결

분류에서Dev

PgAdmin은 원격 서버에 연결

분류에서Dev

R-원격 MySQL 서버에 연결

분류에서Dev

원격 서버에 KVM 연결 (Ubuntu 18.04)

분류에서Dev

Docker 원격 데몬 (TCP) : Docker 데몬에 연결할 수 없습니다.

분류에서Dev

TCP 연결 지원

분류에서Dev

MySQL Linux에 원격 연결

분류에서Dev

Visual Studio 및 원격 git 서버 연결

분류에서Dev

원격 서버에서 GitHub에 SSH 연결

분류에서Dev

Altova DatabaseSpy에서 원격 MySQL 서버에 연결

분류에서Dev

cygwin에서 원격 MySQl 서버에 연결

분류에서Dev

원격 서버에서 MySQL에 연결할 수 없습니다.

분류에서Dev

PHP 페이지에서 원격 서버 연결 오류

분류에서Dev

원격 서버에서 연결 재설정

분류에서Dev

PHP Mysql IIs VPS-원격 서버에서 연결

분류에서Dev

Tinkerpop3은 원격 TitanDB 서버에 연결

분류에서Dev

Python의 Elasticsearch 패키지로 원격 Elasticsearch 서버에 연결

분류에서Dev

MySQL이 원격 서버에 연결할 수 없습니다.

분류에서Dev

TcpClient가 원격 서버에 연결되지 않음

분류에서Dev

원격 mysql 서버에 연결하지 못했습니다.

분류에서Dev

원격 서버의 mongo에 연결할 수 없습니다.

분류에서Dev

Selenium-원격 서버에 연결할 수 없음

분류에서Dev

원격 OPC 서버에 연결하는 방법

분류에서Dev

서버가 원격 시스템에 연결되지 않음 (Linux)

분류에서Dev

원격 연결을 위해 JBOSS-AS 서버에 액세스

분류에서Dev

JAVA를 사용하여 원격 서버에 FTP 연결

분류에서Dev

HttpURLConnection을 사용하여 원격 서버에 연결

Related 관련 기사

뜨겁다태그

보관