npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ivip-ipc

v1.3.0

Published

O módulo ivip-ipc é uma biblioteca que fornece uma classe para facilitar a comunicação assíncrona entre processos no Node.js, usando um arquivo compartilhado como meio de troca de mensagens. Isso é especialmente útil em cenários de cluster ou em ambientes

Downloads

444

Readme

ivip-ipc

O módulo ivip-ipc é uma biblioteca que fornece uma classe para facilitar a comunicação assíncrona entre processos no Node.js, usando um arquivo compartilhado como meio de troca de mensagens. Isso é especialmente útil em cenários de cluster ou em ambientes em que várias instâncias do aplicativo precisam se comunicar sem se depender de um gerenciamento master (processo principal).

Instalação

Para instalar o ivip-ipc, você pode usar o npm:

npm install ivip-ipc

Uso

Aqui está um exemplo básico de como você pode usar o ivip-ipc para comunicação entre processos:

const IPC = require('ivip-ipc').default;
//import IPC from "ivip-ipc";

// Ouvir eventos
IPC.on('evento-personalizado', (mensagem) => {
  console.log('Evento personalizado recebido:', mensagem);
});

// Enviar uma notificação para outros processos
IPC.notify('evento-personalizado', 'Mensagem da notificação');

// Encerra a comunicação IPC
// IPC.destroy();

Documentação da Classe IPC

constructor()

Cria uma nova instância da classe IPC. A instância é capaz de enviar notificações para outros processos e ouvir eventos.

notify(event: string, message: any): Promise<void>

Envia uma notificação para outros processos. O event é o tipo de evento que os processos devem receber e o message é a mensagem para enviar.

destroy()

Encerra a comunicação IPC. Isso limpará todos os ouvintes de eventos e liberará recursos associados à instância.

Eventos

A classe IPC estende SimpleEventEmitter, permitindo que você ouça eventos usando o método on e/ou once, e interrompimento de eventos usando o método off:

const evento = (mensagem) => {
  console.log('Evento recebido:', mensagem);
};

IPC.on('evento', evento);

IPC.off('evento', evento);
const evento = (mensagem) => {
  console.log('Evento recebido:', mensagem);
};

IPC.once('evento', evento);

IPC.off('evento', evento);
const evento = IPC.on('evento', (mensagem) => {
  console.log('Evento recebido:', mensagem);
});

evento.stop(); // Substituindo o uso do método `off`

Cache

Além de uma comunicação entre processos simultâneas, o ivip-ipc também fornece uma funcionalidade de cache compartilhado entre processos no Node.js. Ele permite que você mantenha os dados em cache sincronizados entre várias instâncias do aplicativo, mesmo em um ambiente de cluster.

Uso

Aqui está um exemplo de como você pode usar o Cache para gerenciar um cache compartilhado entre processos:

const { IPC, Cache } = require('ivip-ipc');
//import { IPC, Cache } from "ivip-ipc";

// Ouvir eventos
IPC.on("evento-personalizado", (mensagem) => {
  console.log(`[${process.pid}] Evento personalizado recebido:`, mensagem);
});

// Enviar uma notificação para outros processos
IPC.notify("evento-personalizado", `Mensagem da notificação de [${process.pid}]`);

// Definir um valor no cache
Cache.set("chave", "valor", 60); // Valor expirará após 60 segundos

// Obter um valor do cache
const valor = Cache.get("chave");

console.log(`[${process.pid}]::`, valor); // Valor do cache ou null se expirado

// Encerra a comunicação IPC e limpa o cache
//IPC.destroy();

Documentação das propriedades Cache

set(key: string | number, value: any, expirySeconds?: number)

Define um valor no cache compartilhado. O key é a chave para identificar o valor, o value é o valor a ser armazenado e o expirySeconds é o tempo de expiração em segundos.

get(key: string | number)

Obtém um valor do cache compartilhado. Retorna o valor armazenado ou null se expirado.

has(key: string | number)

Verifica se uma chave existe no cache.

delete(key: string | number)

Remove um valor do cache compartilhado.

cleanUp()

Remove valores expirados do cache compartilhado.

memoize(name: string, fn: (...args: any[]) => any, expireInSeconds?: number)

Cria uma função memoizada que armazena o resultado em cache. Útil para funções que você deseja cache durante um determinado período.

Contribuindo

Contribuições são bem-vindas! Se você encontrar problemas ou tiver melhorias para sugerir, por favor, abra uma issue neste repositório.

Licença

Este projeto é licenciado sob a licença MIT.