Перейти к содержимому
GitHubXDiscord

@triggery/socket

Направляй события socket.io или сообщения нативного WebSocket в события Triggery. Два хука одной формы, оба безопасны для StrictMode — подключение и отключение через useEffect.

npm bundle

pnpm add @triggery/core @triggery/react @triggery/socket

Peer-зависимости: react >= 18.0.0. Нативный конструктор WebSocket используется напрямую, когда нужно, — никаких дополнительных зависимостей.

ЭкспортНазначение
useSocketIoEvent(trigger, eventName, socket, socketEventName, options?)Пробрасывает событие socket.io-client в событие триггера. Поддерживает variadic-аргументы.
useWebSocketEvent(trigger, eventName, ws, wsEvent, options?)Пробрасывает событие нативного WebSocket ('message', 'open', 'close', 'error', кастомное).
import { io } from 'socket.io-client';
import { useSocketIoEvent } from '@triggery/socket';

const socket = io('https://example.com');

function MessageBridge() {
  useSocketIoEvent(messageTrigger, 'new-message', socket, 'message');
  return null;
}

С variadic-аргументами:

useSocketIoEvent(messageTrigger, 'new-message', socket, 'msg', {
  mapPayload: (from, text) => ({ from, text }),
});
import { useWebSocketEvent } from '@triggery/socket';

const ws = new WebSocket('wss://example.com');

function MessageBridge() {
  useWebSocketEvent(messageTrigger, 'new-message', ws, 'message', {
    mapPayload: (e) => JSON.parse((e as MessageEvent).data),
  });
  return null;
}

wsEvent принимает любую строку — типизирован как 'message' | 'open' | 'close' | 'error', но расширяем.

Оба хука подключаются в useEffect (commit-фаза, безопасно для StrictMode) и отключаются при unmount или изменении входных параметров. Если socket / ws равны null или undefined, хук — no-op, пока ты не передашь соединение; удобно, когда сокет создаётся асинхронно.