Giter Site home page Giter Site logo

igtampe / switchboard Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 381 KB

A C# Server framework built on the knowledge of SmokeSignal, designed to make it easy to hold multiple concurrent connections to a server and conduct multiple successive send receive requests.

License: Creative Commons Zero v1.0 Universal

C# 100.00%
server server-framework

switchboard's Introduction

Switchboard

Switchboard is the next evolutionary step from SmokeSignal. Switchboard can manage multiple concurrent connections asynchronously, rather than SmokeSignal's more basic Connect, Receive, Reply, Disconnect single connection at a time process.

Switchboard Ecosystem
The Switchboard Ecosystem with the server on the right, and the client on the left

On the Server

GUI

No more console based nonsense. Switchboard shows you all active connections, and while the server is offline, allows you to easily modify server and extension settings.

Expandable

Switchboard builds on the experience we acquired when creating SmokeSignal and SecuQuor. We allow programmers to build Switchboard Extensions, each with their own viewable and configurable settings. Switchboard's Server is only a class library which contains everything you need to make a server (forms, classes, etc.). All you need to do is create the extensions, and make a small program to start the server with them linked.

Also, I'm pretty sure that with the right wrapper, you could probably automatically load extensions from other dlls in a specified folder on launch. This is a bit beyond what I know right now, but I would be interested in trying it later.

See the Example Server for a small demo.

Multi-User Authentication

Switchboard, unlike SmokeSignal, is built from the ground up to include authentication. Instead of authenticating on each command, like SmokeSignal, users simply "log in", and their session is tied to their connection. Not only this, but now every command is an authenticated command, though the extension can choose to ignore the user.

On the Client

Not mentioned in the help is the option to read the stream if there is any data by using the command READ. Also, if the server connection ever hangs, you can break out of a read attempt by using the Esc key.

Still simple

Switchboard aims to provide an improved connection response-time, and expanded capabilities for sending/receiving data, with the same level of simplicity as SmokeSignal. While we can no longer offer the ServerCommand() function, the process of connecting to the server is still relatively simple. It is as folows:

  1. Create a SwitchboardClient object with IP and Port
  2. Connect to the server using Connect().
  3. Use SendReceive(Data) as a ServerCommand Equivalent.

Once you're done, simply close the connection using close()

Flexible

Along with using SendReceive(), Switchboard also lets you only send() or receive() data using the appropriate functions. This opens the door to other possibilities, since using this, a client can act as a pseudo-server, allowing true two way communication.

Easier to Use

Switchboard's Client is now its own separate class library, so it's more easily importable to your new project.

Faster

Compared to SmokeSignal, a Switchboard Client should be a lot faster when dealing with repeated requests. Instead of having to open a connection for each request, a single connection can be maintained for the duration of the burst of requests.

switchboard's People

Contributors

igtampe avatar

Watchers

 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.