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 object 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 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
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");
//...
//...
//check out the code for more functions the API offers
//...
//...
And now, if you're done with adding data, fire the function that does the encoding for you automatically like so:
wmo.Encode();
wmo.AddFile(file);
wmo.AddFileFrom("file-input-id");
wmo.AddJson({jsonobject});
wmo.AddString("key","string you intend to add");
// eg wmo.AddString("name","Rodgers");
wmo.Encode();
let jsondata = wmo.DecodeJson(messageFromServer);
let mystr = wmo.DecodeString(messageFromServer, "key");
// eg, let myname = wmo.DecodeString("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
'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.
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(){
//...
}