Giter Club home page Giter Club logo

mesh-chat-protocol's Introduction

mesh-chat

Join the chat at https://gitter.im/neuravion/mesh-chat Chat protocol for secure communication over a mesh network over the internet.

Topics / Reference

Routing Across the Mesh Network
Message Types
Server/Node List Sync
Require Commands

Recognized mesh-chat Clients

Clients have been built in multiple languages. Interpretations between these clients are very unique, but the mesh-chat protocol is always consistent.

Planned mesh-chat Clients

mesh-chat Relay

There is currently only one server-side relay. All clients can connect to this server. Many instances of this server across the internet are vital to the survival of a mesh-network and allow p2p communication across the globe.

Responsibility Breakdown

The client is responsible for sending all messages to servers. It is only permitted to send messages on its own behalf, and not for any other party. It will keep track of the active list of authorized servers.

The server is responsible for configuration of authorized servers and handling of all message receipts. When a message arrives, it is then relayed to the local client for display. In Milestone 2, the server will also handle authorization and server exchange.

Mesh-Chat Protocol

Each message will be a serialized JSON hash. Every hash must include:

{
  type: <MessageClassName>, # This will tell each client how to read the rest of the keys
  client: <String>, # name of the client that sent the message
  client_version: <String>, # version of the client that sent the message
  time_sent: <UTC DateTime String>, # time at the packaging of this message
  sender: {
    name: <String>,
    location: <IpAddress>,
    uid: <String> # Uinque ID generated by your client
  },
  message: <Indeterminant> # Variable type, can be string or json object (see below)
}

A receiving client deserializes the JSONized hash, and can do whatever with it.

Encryption

mesh-chat applications should use dual RSA (PKCS1 v1.5) and AES-512 for encryption and decryption. Nodes which are new to the system must generate a set of RSA keys and provide at least one other node with the public key before it can begin participating in the mesh network.

mesh-chat-protocol's People

Contributors

etkirsch avatar gitter-badger avatar nullvoxpopuli avatar

Watchers

 avatar  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.