circuits
Node.js RESTful socket.io router - Minimalistic Style
Last updated 6 years ago by romansky .
Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install circuits 
SYNC missed versions from official npm registry.

circuits

Build Status

A simple socket-io framework for client and server communcation around CRUD operations

Usage

install using npm

npm install circuits

Basic client server example source

# port to listen to
testPort = 8001
# create a server
httpServer = http.Server()
# instantiate a Circuits server with a controller router
server = new Server httpServer, (controller)->
	switch controller
		# match against the requested router to a specific one
		# every router needs to implement the CRUD operation 
		# it needs to support
		when 'echo' then {
				"read" : (message, id, cb)-> 
					# the first argument for the callback is 
					cb(null,message)
			}


httpServer.listen testPort

client = sioc.connect("http://localhost:#{testPort}")

client.on 'connect', ->
	client.emit Operation, 'echo', CRUD.read, 'any bats in here?',(err, data)->
		if (data == 'any bats in here?')
			console.log 'No bats here I guess..'
			process.exit()

ToDo: Example using Circuits with a Backbone model Example using Circuits with a Backbone collection Example using Circuits with Express framework

Whats in the box?

create Circuits server instance

new circuits.Server( httpServer, controllerResolver, [acl, redisHost, redisDB, redis, redisPort, circuitChannel] )

  • httpServer instance of require('http').Server
  • controllerResolver function that returns an object with mapping to CRUD operation for provided controller name
  • acl the ACL object, if none provided it allowes everything
  • redisHost IP address of your redis (default is "127.0.0.1")
  • redisDB redis db to use (default is 10 )
  • redisPort redis port (deault is 6379)
  • circuitChannel name space for communication between Circuits instances

messages

circuits.Messages is a map of String => String of supported Circuits messages

the Operation message is a request for a message to be dispatched to respective controller on the server

arguments

name type description
controller name String the controller to dispatch this message to
crudOp circuits.CRUD.{create,read..} the crud operation
params Object parameters to be passed
operation params Object* depending on the CRUD operation, a set of required fields

required operation params for the different CRUD operations

CRUD.create

name type description
data Object the object to be created

CRUD.read

name type description
id String resource id

CRUD.update

name type description
id String resource id
data Object the object to update with

CRUD.delete

name type description
id String resource id

CRUD operations

circuits.CRUD

is simply a map of String => String of
create, read,update, delete and patch

ACL

circuits.ACL constructor arguments

name type description
rules Object mapping of controllers to allowed crud operations and respective user groups
controller+crud groups function(userID, callback = function(err, groups)) function that returns groups for a given user ID
optional check function(userID, model, modelId, crudOp, callback = function(message,boolean) an optional check for special cases were you want to enforce a finer grained ACL, for example for when only a creater of a resource is only allowed to do a write operation on that model..

example of a controller+crud group rules

{
	"MyModel" : {
		"create" : ["public"],
		"read" : ["public"],
		"update" : ["users"],
		"delete" : []
	},
	"SecretModel" : {
		"create" : ["users"],
		"read" : ["users"],
		"update" : ["users"],
		"delete" : ["users"]
	}
}

is simply an object mapping controllers to respective allowed crud operations

High Level Design

Current Tags

  • 0.3.1                                ...           latest (6 years ago)

20 Versions

  • 0.3.1                                ...           6 years ago
  • 0.3.0                                ...           6 years ago
  • 0.2.6                                ...           6 years ago
  • 0.2.5                                ...           6 years ago
  • 0.2.4                                ...           6 years ago
  • 0.2.3                                ...           6 years ago
  • 0.2.2                                ...           6 years ago
  • 0.2.1                                ...           6 years ago
  • 0.2.0                                ...           6 years ago
  • 0.1.10                                ...           6 years ago
  • 0.1.9                                ...           6 years ago
  • 0.1.8                                ...           6 years ago
  • 0.1.7                                ...           6 years ago
  • 0.1.6                                ...           6 years ago
  • 0.1.5                                ...           6 years ago
  • 0.1.3                                ...           6 years ago
  • 0.1.1                                ...           6 years ago
  • 0.1.0                                ...           6 years ago
  • 0.0.3                                ...           6 years ago
  • 0.0.1                                ...           7 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (8)
Dev Dependencies (1)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |