Skip to content

WebsocketMessageObject is an API for maximizing the capabilties of websockets and overcome all the weaknesses of http.

License

Notifications You must be signed in to change notification settings

AtegyekaRodgers/WebsocketMessageObject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebsocketMessageObject

WebsocketMessageObject is an API that enables you to package any type of data into a single (binary format) massage so that you can easily send it over websocket protocol. You simply create a wmo instance and keep adding any data into it by calling the appropriate functions provided in the API, then finally call the 'Encode' function which converts everything into a stream of binary data that you can send to your back-end server using the 'websocket.send(theBinaryData)' function. You can add images, videos, documents, json data as well as plain text data. The API is available in a number of programming languages including go (golang) and javascript. NOTE: You need to have two wmo API interfaces; one for the front end (mainly in javascript) and the other for the back-end ( golang, nodejs, php, etc).

Installation 1

Let's start with the front-end version, (npm package in javascript).

The Golang version will be explained after javascript. Please scroll down.

To use Websocket Message Object API, install it as a dependency:

If you use npm:

$ npm install websocket-message-object

Or if you use Yarn:

$ yarn add websocket-message-object

Usage

First, you need to import the module into your application as follows:

In a react app,

import {WebsocketMessageObject} from 'websocket-message-object';

Or if you are not using react;

const wmo = require("websocket-message-object");

Now that you have a wmo object created, you can add any data to it. Here is how to add an image file.

wmo.AddFile(file); 
//NOTE: This assumes you alredy have a file object read from the DOM eg using FileReader
 
//If you want to add the file directly from the html file input field, use this method:
wmo.AddFileFrom("id-of-the-html-file-input"); 

//...
//...
// and many more ... (see 'API' section below)
//...
//...

And now, if you're done with adding data, fire the function that does the encoding for you automatically like so:

wmo.Encode();

List of functions available (API)

Adding data to encode

wmo.AddFile(file); 
wmo.AddFileFrom("file-input-id");
wmo.AddJson({jsonobject});
//eg. wmo.AddJson({name: "Rodgers", nationality: "Ugandan", title: "Software Engineer"});
wmo.AddString("key","string you intend to add"); 
// eg wmo.AddString("name", "Rodgers"); 
wmo.Encode();

Decoding data received from server

let jsondata = wmo.DecodeJson(messageFromServer);
let mystr = wmo.DecodeString(messageFromServer, "key"); 
// eg, let myname = wmo.DecodeString(messageFromServer, "name"); => returns a name such as 'Rodgers'
let strMap = wmo.DecodeStringAll(messageFromServer);    
//returns a map of key-vale pairs of strings.
let filesArray = wmo.DecodeFiles(messageFromServer);
let filesBytes = wmo.ReadFilesBytes(messageFromServer);    
//returns all files data in plain binary format

NOTE:

'messageFromServer' MUST be a binary format message encoded using the server side version of wmo. This is currently available only in Go (Golang). I am still implementing wmo for other languages.

I welcome anyone who want to contribute to this project especially in other languages.

___

Installation 2

Now the go back-end.

This is how to import the Go package into your project.

Run this command:

$ go get "github.com/AtegyekaRodgers/WebsocketMessageObject"

Then import the package into your application

package main

import (
  "fmt"
  wmo "github.com/AtegyekaRodgers/WebsocketMessageObject"
  //...
  //...
)

func main(){
  //...
}

About

WebsocketMessageObject is an API for maximizing the capabilties of websockets and overcome all the weaknesses of http.

Resources

License

Stars

Watchers

Forks

Packages

No packages published