본문으로 건너뛰기

IO시그널 소개

IO시그널은 웹 디바이스의 인증 및 실시간 암호 통신을 지원하는 오픈소스 공개 라이브러리와 프로그램입니다. JavaScript와 C/C++ 를 지원하므로 웹브라우저(Web Browser) 부터 아두이노(Arduino)까지 다양한 장치에 적용 가능합니다.

2. 구성

  • Mac, Windows, Linux 용 서버 및 클라이언트 CLI 프로그램
  • 아두이노 클라이언트 용 C/C++ 라이브러리 및 예제소스
  • 서버용 JavaScript 라이브러리 및 인증기능 적용 예제소스

3. 응용예

  • WebRTC 시그널링
  • 암호화 채팅서비스
  • IoT 웹 통합
  • 서버간 보안통신

4. 사용자 유형별 안내

4-1. 서버 운영자 및 백엔드 JS개발자

공개된 IOSignal 라이브러리를 설치 후 직접 서버나 클라이언트를 구현을 할 수 있습니다. 더불어 iosignal-cli 프로그램을 설치 후 간단히 서버와 클라이언트를 실행 할 수 도 있습니다. 참고로 IO시그널은 (MQTT 같은) 시그널링 프로토콜이 내장되어 있으므로, 메시지 전달 방식을 (Socket.io 같이)직접 구현 할 필요가 없습니다. 또한 옵션 설정 통해 (인증 사용영부, 로그 저장 여부, 전송량 제한 여부 등)서버의 구동 방식을 선택할 수 있습니다.

아래의 로드맵을 참고하세요

  1. IOSignal 기본 및 시그널링 실습
  2. 시그널 태그 및 기초 문서 참고
  3. NodeJs 용 클라이언트 라이브러리로 NodeJS 데스크탑 프로그램 만들어보기
  4. NodJS 용 서버 라이브러리로 직접 서버 구현해보기
  5. 인증 사용여부 선택하고 서버 구동하기
  6. Redis 연동 인증적용으로 서버 구동하기
  7. 웹앱이나 아두이노 장치와의 연동 실습

4-2. 웹앱 프론트엔드 JS개발자

아래의 로드맵을 참고하세요

  1. IOSignal 설치 및 기본사용법 실습
  2. 시그널 태그 및 기초 문서 참고
  3. 웹브라우저용 라이브러리로 웹앱 만들어보기 (CDN 사용 가능)
  4. Angluar, React, Vue, Svelte 모두 적용 가능합니다.
  5. 암호 채팅 앱 구현
  6. WebRTC 시그널링 구현
  7. 데스크탑 프로그램이나 아두이노 장치와의 연동 실습

4-3. 아두이노(Arduino C/C++) 개발자

아래의 로드맵을 참고하세요

  1. IOSignal 설치 및 기본사용법 실습
  2. 자체 서버 실행이 어려울 경우 공개된 리모트 시그널 서버를 사용 가능합니다.
  3. 시그널 태그 및 기초 문서 참고
  4. 아두이노 라이브러리 설치
  5. 아두이노 예제 설치
  6. 앱에 접속하여 원격제어 실습
  7. 자체 웹앱 개발에 관심이 있으실 경우, JS를 학습하시면 가능합니다.

5. 아두이노용 IO시그널 공개서버

전문 개발 지식이 없어도 iosignal-cli 프로그램을 설치하면 자신의 컴퓨터나 클라우드 서버에서 직접 IO시그널 서버를 운영할 수 있습니다. 하지만 직접 서버를 운영하는게 곤란하거나 전용 웹앱 개발이 어려우신 경우 체험용 공개 서버를 이용 가능합니다. 해당 서버에 연결된 기기는 기본적으로 리모컨 앱과 연동됩니다.

현재 서버의 주소와 포트는 아두이노 예제 소스에 입력된 정보와 동일합니다. (즉, 서버주소의 수정 없이 업로딩하세요) 단, 서버 주소 및 운영상태는 수시로 변경될 수 있습니다. 일시적인 테스트 용도로만 사용 가능하십니다.

  • 주소: io.iosignal.net
  • 포트: 55488

5-1. 공개서버의 인증

  • 현재 공개 서버는 인증키가 없어도 익명으로 서버접속 후 이용이 가능합니다.
  • 인증정보가 없는경우 auth 요청을 하지않고 접속하면 익명접속이 됩니다.
  • 공개된 아두이노 예제소스에는 auth 실행문이 주석처리되어 기본적으로 인증 시도를 하지 않습니다.
  • 주의. 잘못된 인증정보로 auth 요청을 할 경우, 통신이 불가능해집니다.
  • 즉, 인증정보 발행을 받지 않았다면, 주석처리를 그대로 유지하시면 됩니다.
  • 리모컨앱에서 구글로그인을 하면 2개의 장치 인증키가 발급됩니다.(2023.12월 현재)

5-2. 공개 서버 제한사항

  • 공개서버는 Quota(사용량제한) 설정이 적용되어 시그널 전송용량 및 멀티캐스트 개수 제한이 있습니다.
  • 제한 수치는 수시로 변경될 수 있습니다. 현재 테스트 서버는 다수의 저사양 기기(아두이노 UNO 기준)의 테스트 용도이므로 1회 전송 데이타 크기가 200바이트 이하이고 2개 이하의 장치와 연동 할 경우로 가정하시면됩니다.
  • 위 한도를 넘길 경우 서버가 연결이 끊거나 전송 시그널이 무시될수 있습니다.
  • 비정상적인 데이타를 전송시 접속이 즉시 차단 되며, 반복 될 경우 해당 IP주소의 접속이 차단될 수 있습니다.
  • 서버에서 허용량을 높일 경우 고용량 송신도 가능합니다.
    • ESP32 IPCam 으로 수십KB 이미지의 실시간 이미지 암호화 전송도 가능합니다.
    • 웹브라우저의 경우 수 MB 크기의 데이타 전송도 가능합니다.
  • 대량 통신이 필요하실 경우 자체 서버를 운영하시기 바랍니다.
  • 자체 서버 운영이 곤란 하실 경우 리모컨 클라우드 서비스를 이용하실 수 있습니다.(별도상담)

6. 리모컨 앱

리모컨 앱은 설치 없이 웹브라우저로 접속하여 사용하는 웹앱입니다. 운영체제와 상관없이 데스크탑, 스마트폰, 노트북, 테블릿 모두에서 실행 가능합니다. 웹앱 실행시 동일한 네트워크에 연결된 아두이노나 웹디바이스를 검색하고, 곧바로 제어할 수 있는 UI를 제공합니다. 공개된 아두이노 예제소스를 설치 후 장치가 서버와 연결 되면 웹앱과 연동이 가능해집니다. 체험용 리모컨 앱의 주소나 기능은 수시로 변경될 수 있습니다.

https://remocon.kr

7. 오픈소스 저장소

IOSignal repositories.

  • Javascript: iosignal [ github | npm ]
    • Node.js server
    • Node.js client ( WebSocket, CongSocket)
    • Web Browser client( WebSocket)
  • Arduino client:
    • iosignal-arduino [ github ]
    • or use Arduino Library Manager: IOSignal
  • CLI program
    • iosignal-cli [ github | npm ]
    • install: npm i -g iosignal-cli
    • or sudo npm i -g iosignal-cli
    • support mac, linux and windows.
    • server and client