Giter VIP home page Giter VIP logo

node-json-streamer's Introduction

node-json-streamer

A really basic library wrapping a node TCP socket sending and parsing multiple JSON objects. All this does is add an escape character on the client side (\u00a0: A unicode control character), split up the messages received on ]\u00a0 || }\u00a0, then emit 'msg' with the parsed JSON or nothing at all if it failed. It does some error checking so if you send fluff down the socket then proper JSON it'll trim the fluff (without any kind of notification at all). Oh it'll also randomly purge the buffer if it hits 512kb without any valid JSON. You know, just FYI.

Installation

$ npm link path/to/json-streamer
$ npm install json-streamer

Requirements

  • A recent version of node. package.json says v0.6.0 but I'm sure it can handle less than that.
  • Willingness to accept cuddles.

Features

  • Send and receive JSON reusing the same TCP connection
  • Error correction, if you send fluff then valid JSON it will recover (by deleting the fluff)

Example

var jsonStreamer = require('jsonStreamer');

var server = jsonStreamer.listen(3001);

server.on('connection', function (client) {
  client.on('msg', function gotMsg(msg) {
    // Will get:
    // {content: { 'a': 'b', 'c': 'd'}}
    // {content: { 'b': 'b', 'd': 'd'}}
    // {content: { 'a': 'ok'}}
    // {content: { 'a': 'b'}}
    console.log('Server received message: ', msg.content);
    client.writeJSON({ ok: true });
  })
});

var client = jsonStreamer.connect(3001, function connectListener() {
  console.log("Connected");
  client.writeJSON({ a: 'b', c: 'd'});
  client.writeJSON(JSON.stringify({ b: 'b', d: 'd'}));
  client.writeJSON("BAHABABAHBAHABHA" + JSON.stringify({a: 'ok'}));
  client.writeJSON("OH GOD WHY");
  client.writeJSON('{"a":"b"}');
  client.writeJSON('{"a":');
  client.writeJSON('"z"}');
});

client.on('msg', function gotMsg(msg) {
  // Will get * 4 (all valid messages):
  // {content: { 'ok': true}
  console.log('Client received message: ', msg.content);
});

node-json-streamer's People

Contributors

dbrain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

raulhmacias

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.