Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

StdJsonIo

Starts a pool of workers that communicate with an external script via JSON over STDIN/STDOUT.

Originally written to use react-stdio but can be used with any process that reads a JSON object from STDIN and outputs JSON on STDOUT.

Installation

If available in Hex, the package can be installed as:

  1. Add std_json_io to your list of dependencies in mix.exs:

    def deps do [{:std_json_io, "~> 0.1.0"}] end

  2. Ensure std_json_io is started before your application:

    def application do [applications: [:std_json_io]] end

Setup

Define a module and use StdJsonIo.

defmoduleMyApp.ReactIodouseStdJsonIo,otp_app: :my_append

When you use StdJsonIo your module becomes a supervisor. You'll need to add it to your supervision tree.

children=[# snipsupervisor(MyApp.ReactIo,[])]opts=[strategy: :one_for_one,name: MyApp]Supervisor.start_link(children,opts)

Configuration

You can either configure as additional arguments of the use statement, or in your config file.

config:my_app,MyApp.ReactIo,pool_size: 20,# default 5max_overflow: 10,# default 10script: "path/to/script",# for react-io use "react-stdio"watch_files: [Path.join([__DIR__,"../priv/server/js/component.js"])# do not watch files in dev]
  • script - the script to run for the IO server
  • watch_files - A list of files to watch for changes. When the file changes, kill the IO worker and restart, picking up any changes. Use only in dev.
  • pool_size - The size for the pool of workers - See poolboy size
  • max_overflow - The poolboy max_overflow

About

A simple library for Elixir that provides json over STDIO

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages