Skip to content

Simplified server for socket.io messaging. See @cameronwp/client-endpoint.

License

Notifications You must be signed in to change notification settings

cameronwp/server-endpoint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Server Endpoint

The server side of simplified socket.io messaging.

See also @cameronwp/client-endpoint.

npm i -S @cameronwp/server-endpoint

Sample Usage

All examples assume that on{message,request} handlers were set before any {message,request} were sent.

// server.js
const ServerEndpoint = require('@cameronwp/server-endpoint');

const port = 8000;
const server = new ServerEndpoint(port);
const namespace = server.createNamespace('chat'); // create as many namespaces as you want

// example server -> client push
namespace.pushMessage('new-message', 'lorem ipsum...');

// example client -> server post
namespace.onmessage('config-change', val => {
    console.log(JSON.stringify(val)); // logs "{config: 'object'}"
});

// example server response to a request
namespace.onrequest('test-request', 'ack');

// example server responding to a request with a function
namespace.onrequest('test-request-doubler-function', data => {
  return data * 2;
});
// client.js
const ClientEndpoint = require('@cameronwp/client-endpoint');

const client = new ClientEndpoint('http://localhost:8000/chat');  // note the port and "/chat" namespace

// example server -> client push
client.onmessage('new-message', val => {
    console.log(val); // logs "lorem ipsum..."
});

// example client -> server post
client.postMessage('config-change', {config: 'object'});

// example server response to a request
client.request('test-request').then(console.log); // logs "ack"

// example server response to a request
client.request('test-request-doubler-function', 2).then(console.log); // logs 4

API

Classes

NamespaceEndpoint
ServerEndpoint
ServerEndpoint

Typedefs

socketCallback : function

Connection callback. Use socket.emit('message', data) to send data to client.

Namespace ⇐ Endpoint

Kind: global class Extends: Endpoint

new Namespace()

Wraps a namespaced socket.io server.

namespace.onconnection(cb)

Set onconnection handler when new clients join.

Kind: instance method of Namespace

Param Type
cb socketCallback

namespace.pushMessage(type, data) ⇒

Generic message sender. Difficult to promisify because it's sent to many listeners.

Kind: instance method of Namespace Returns: this

Param Type
type string
data any

namespace.onrequest(type, response)

Sets up request handlers.

Kind: instance method of Namespace

Param Type Description
type string
response any If string or number, this method adds a handler to respond to client requests of type with the response of response. If response is a function, response is called when the request of type is received.

ServerEndpoint

Kind: global class

new ServerEndpoint()

A factory for creating namespaced socket.io servers.

new ServerEndpoint(port)

Create a new ServerEndpoint.

Returns: this

Param Type
port number

serverEndpoint.createNamespace([name]) ⇒ Namespace

Create handlers for communications. Must create a namespace before ServerEndpoint is usable!

Kind: instance method of ServerEndpoint

Param Type
[name] string

ServerEndpoint

Kind: global class

new ServerEndpoint()

A factory for creating namespaced socket.io servers.

new ServerEndpoint(port)

Create a new ServerEndpoint.

Returns: this

Param Type
port number

serverEndpoint.createNamespace([name]) ⇒ Namespace

Create handlers for communications. Must create a namespace before ServerEndpoint is usable!

Kind: instance method of ServerEndpoint

Param Type
[name] string

socketCallback : function

Connection callback. Use socket.emit('message', data) to send data to client.

Kind: global typedef

Param Type Description
socket socket connection to client.

About

Simplified server for socket.io messaging. See @cameronwp/client-endpoint.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published