본문으로 건너뛰기

IOSignal 한눈에 보기

IOSignal은 웹브라우저, Node.js 프로그램, Arduino 장치를 하나의 메시지 서버로 연결하는 오픈소스 실시간 메시징 라이브러리입니다. 클라이언트는 서버에 접속해 태그가 붙은 메시지(시그널)를 보내고, 서버는 태그를 보고 받을 대상을 찾아 전달합니다. 공유 키 인증과 암호화(boho)도 함께 제공합니다.

브라우저와 Node.js는 WebSocket, Arduino와 IOCongSocket은 TCP(CongSocket)로 IOSignal 서버에 연결하고, 서버는 인증 후 채널·CID·홈채널 규칙으로 메시지를 전달

핵심 개념 네 가지​

개념한 줄 설명자세히
서버클라이언트 연결을 받고 메시지를 중계합니다. Node.js 코드 또는 CLI로 실행합니다.서버 실행
CID서버가 연결마다 부여하는 클라이언트 주소입니다. ready 이벤트 이후 확정됩니다.인증과 암호화
태그room#topic, CID@topic처럼 받을 대상과 주제를 나타내는 문자열입니다.태그와 3가지 전달 방식
홈채널채널 이름을 생략한 #topic은 같은 공인 IP(같은 공유기)의 연결끼리만 전달됩니다. 인증 경계는 아닙니다.홈채널

메시지는 세 가지 방식으로 전달됩니다. 채널을 구독한 모두에게 보내는 채널 발행, 특정 CID 하나에게 보내는 CID 직접 송신, 한 장치가 자기 CID로 발행하고 관심 있는 클라이언트가 구독하는 CID 발행입니다.

구성​

  • JavaScript 라이브러리 iosignal: Node.js 서버·클라이언트와 브라우저 클라이언트를 하나의 npm 패키지로 제공합니다.
  • Arduino 라이브러리 IOSignal: Arduino Client 인터페이스를 사용하는 C/C++ 클라이언트입니다. 별도 버전으로 배포됩니다.
  • iosignal-cli: 코드 없이 서버와 대화형 클라이언트를 실행하는 Mac·Windows·Linux용 명령입니다.
  • boho: IOSignal이 인증과 암호화에 사용하는 공유 키 라이브러리입니다. boho 설계와 기술 상세

IOSignal과 Remocon은 별도 프로젝트입니다. IOSignal은 통신 라이브러리이고, Remocon은 이를 활용하는 웹앱과 Arduino 예제입니다. 패키지별 버전은 버전과 검증 기준을 확인하세요.

환경별 시작 문서​

목적클라이언트 또는 도구시작할 문서
HTML 파일에서 연결브라우저 IO, WebSocketHTML과 CDN
React·Svelte·Vite 앱브라우저 IO, WebSocket번들러
Node.js 프로그램IO(WebSocket), IOCongSocket(TCP)Node.js 클라이언트
Arduino 기기IOSignal C++, CongSocket(TCP)Arduino 설치
터미널에서 시험iosignal-cliCLI로 첫 메시지 보내기
메시지 중계 서버 운영Node.js Server 또는 CLI서버 실행

브라우저는 import IO from 'iosignal/io', Node.js는 import { IO } from 'iosignal'을 사용합니다. 같은 패키지의 서로 다른 진입점입니다.

서버의 port는 WebSocket, congPort는 Arduino와 IOCongSocket용입니다. 두 종류의 클라이언트를 함께 연결하려면 두 포트를 모두 설정합니다.

import { Server } from 'iosignal';
new Server({ port: 7777, congPort: 8888 });

응용예​

  • WebRTC 시그널링
  • 서버 간 메시지 전달

운영 중인 활용 사례:

  • Remocon: Arduino·웹 장치를 홈채널에서 찾아 바로 제어하는 리모컨 웹앱
  • bayo.tv: IOSignal 클라이언트를 내장해 Remocon으로 원격 제어할 수 있는 동영상 플레이어

IOSignal은 메시지 전달을 담당합니다. 방의 참여 권한, 장치 명령의 의미, 처리 결과 응답 같은 규칙은 응용 앱에서 정합니다.

사용자 유형별 안내​

자주 틀리는 동작은 자주 하는 실수에 모았습니다.