Git Product home page Git Product logo

artemis's Introduction

Artemis is an RTMES (Real Time Event & Message Server) with a Go API

Built on top of gorilla/websocket, to be expanded to support other real time protocols

Use Artemis to manage server-side WS (for now) connections. Create agents to receive both ws messages and artemis-generated events within an isolated hub. Respond to these events with the agents themselves or with delegated objects of your own.

This information is outdated (since always) - leaving in case some ideas need to be reviewed/used

Updated README coming soon.

App is responsible for handling http request (authentication, any other operation desired) App is responsible for creating any hubs or families that the client should belong to, and adding the client to those.

  • rtmes.NewHub
  • rtmes.NewFamily

rtmes will manage the persistence of hubs and families. It will expose an API to access hubs and families if necessary.

  • rtmes.GetHub(id) *Hub
  • rtmes.Hubs []*Hub
  • Hub.GetFamily(id) *Family
  • Hub.Families []*Family

App then hands the request to rtmes to upgrade the connection to WS. From there, rtmes manages the connection and any interconnectivity to other clients. It does this through the

  • rtmes.NewClient(r, w, families, hub)

A client is created when the connection is opened. It remains open until the client (device) closes the connection.

The client is responsible for adding itself to 0 or more hubs and 0 or more families. If the client does not specify a hub, then it will be added to the default hub. If the client does not specify a family, then it will not be a member of any families.

Families and Clients both implement an interface for responding to events. (EventResponder)

Families and Clients both implement an interface for responding to messages. (MessageResponder)

Families and Clients both implement an interface for responding pushing messages from the server. (MessagePusher)

Events are specific to a Hub - only EventResponders within the Hub that fires the event will respond. Are there some default events? Maybe, probably.

Requirements for messages:

Messages must be parsable into an object with an type/name

artemis's People

Contributors

trey-jones avatar

Watchers

James Cloos avatar  avatar Jesse Smith avatar  avatar

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.