Nihilistic Party Mantra

    mse-proto-server

    0.2.0 • Public • Published

    MSE protocol

    version: 1.0

    This protocol is used by media server engine (MSE) and clients for communication. Protocol is based on JSON RPC 2.0.

    Example usage

    • Install package using NPM:
    npm i --save mse-proto
    const WebSocket = require('ws')
    const proto = require('mse-proto')
    const RequestFactory = proto.RequestFactory
    const ResponseAdapter = proto.ResponseAdapter
     
    const wss = new WebSocket(`wss://mse:443/`)
     
    wss.on('open', (ws) => {
      wss.send(RequestFactory.ping())
    })
    wss.on('message', (response) => {
      if (ResponseAdaptor.ping(response)) {
        console.log(response)
      }
    })

    Messages

    Errors


    ping

    • ping server. Method can be used as heartbeat.

    ping request (client)

    {
      "id": 1,
      "method": "ping",
      "jsonrpc": "2.0"
    }

    ping success response (server)

    {
      "id": 1,
      "result": "pong",
      "jsonrpc": "2.0"
    }

    authentication

    authentication request (client)

    • A JWT token is used for authentication. Subsequent calls do NOT need the token.
    {
      "id": 2,
      "method": "auth",
      "jsonrpc": "2.0",
      "params": {
        "token": "appropriate jwt token",
        "version": "1.0"
      }
    }

    authentication success response (server)

    {
      "id": 2,
      "jsonrpc": "2.0",
      "result": "authenticated"
    }

    start

    start request (client)

    • This method is available only to authorized clients.
    • Starts video service.
    {
      "id": 3,
      "method": "start",
      "jsonrpc": "2.0"
    }

    start success response (server)

    {
      "id": 3,
      "jsonrpc": "2.0",
      "result": "started"
    }

    whoami

    whoami request (client)

    • Available in development environment only.
    • This method is available only to authorized clients.
    {
      "id": 4,
      "method": "whoami",
      "jsonrpc": "2.0"
    }

    whoami success response (server)

    {
      "id": 4,
      "jsonrpc": "2.0",
      "result": {
        "domain": "domain",
        "agent": "web or mobile",
        "role": "user - admin or super",
        "userId": "random string",
        "roomId": "random string",
        "ipAddress": "client ip address",
        "tokenIssued": "date the token is issued",
        "validFrom": "token is valid from date",
        "validTo": "token is valid to date"
      }
    }

    iceCandidate

    iceCandidate request (client & server)

    • This method is available only to authorized clients.
    • This method is a notification. Server does NOT respond to it and client should not too.
    {
      "id": null,
      "method": "iceCandidate",
      "jsonrpc": "2.0",
      "params": {
        "candidate": "ice candidate value"
      }
    }

    sdpOffer

    sdpOffer request (client & server)

    • This method is available only to authorized clients.
    • This method is a notification. Server does NOT respond to it and client should not too.
    {
      "id": null,
      "method": "sdpOffer",
      "jsonrpc": "2.0",
      "params": {
        "offer": "sdp offer value"
      }
    }

    disconnect

    disconnect request (client)

    • This method is available only to authorized clients.
    • This method is a notification. Server does NOT respond to it.
    {
      "id": null,
      "method": "disconnect",
      "jsonrpc": "2.0"
    }

    Chat message (client & server)

    • NOT IMPLEMENTED
    • This method is available only to authorized clients.
    • This method is a notification. Server does NOT respond to it and client should not too.
    {
      "id": null,
      "method": "chat",
      "jsonrpc": "2.0",
      "params": {
        "to": [],
        "message": "message",
        "attachment": "object"
      }
    }

    Errors

    Invalid json object

    {
      "id": null
      "jsonrpc": "2.0",
      "error": {
        "code": -32700,
        "message": "Parse error"
      }
    }

    Invalid json rpc 2.0 object

    {
      "id": null
      "jsonrpc": "2.0",
      "error": {
        "code": -1001,
        "message": "Invalid json rpc 2.0 object"
      }
    }

    Method not found

    {
      "id": "related request id",
      "jsonrpc": "2.0",
      "error": {
        "code": -32601,
        "message": "Method not found"
      }
    }

    Invalid method parameter

    {
      "id": "related request id",
      "jsonrpc": "2.0",
      "error": {
        "code": -32602,
        "message": "Invalid params"
      }
    }

    Authentication failure

    {
      "id": "related request id",
      "jsonrpc": "2.0",
      "error": {
        "code": -4001,
        "message": "Authorization Failed"
      }
    }

    Unauthorized access

    {
      "id": "related request id",
      "jsonrpc": "2.0",
      "error": {
        "code": -5001,
        "message": "Unauthorized Access"
      }
    }

    Invalid call order

    • Calling a method before calling required methods before it.
    {
      "id": 3,
      "jsonrpc": "2.0",
      "error": {
        "code": -6001,
        "message": "Invalid Call Order",
        "data": {
          "required": "Required Method"
        }
      }
    }

    Install

    npm i mse-proto-server

    DownloadsWeekly Downloads

    12

    Version

    0.2.0

    License

    MIT

    Last publish

    Collaborators

    • xaq