loopback-socket
Loopback module for create Socket.io connections and allow call methods.
Installation
npm install loopback-socket --save
Usage
Server side
Include
const LoopbackSocket = ;
LoopbackSocket.get(name, [timeout])
Create or get a instance with a specific name.
Arguments
Name | Type | Description |
---|---|---|
name |
string |
Name to instance. Required |
[timeout] |
integer |
Time to wait authentication after establish connection before disconnect the socket. Optional. |
Example
const loopbackSocket = LoopbackSocket;const loopbackSocket = LoopbackSocket;
loopbackSocket.start(io)
Configure authentication, callbacks and methods with a server socket.
Arguments
Name | Type | Description |
---|---|---|
io |
object |
Server Socket IO instance. Required. |
Example
const server = ;const io = server;loopbackSocketstartio;
loopbackSocket.auth(authentication)
Set the function to authenticate connected sockets.
Arguments
Name | Type | Description |
---|---|---|
authentication |
autentication function or object |
Function called with (socket, credentials, [cb]) arguments or object like { model: Model, method: methodName } where Model is a class and methodName is one of its methods (defined or to be defined) like autentication function . |
Authentication function
If an error is thrown in this function or it return a false value then authentication fails. If argument cb
is not defined then the returned value will be a the authentication response, and if this value is a promise, then it will be resolved before.
Name | Type | Description |
---|---|---|
socket |
object |
Socket connected. Required. |
credentials |
object |
Credentials received. Required. |
[cb] |
function |
Callback with (err, success) arguments to async return value with NodeJs callback style. Optional. |
Example
// Authentication function with NodeJs callback style { User;} // Authentication function with direct value returned o Promise style { return User; // return data or a promise} // Direct settingloopbackSocket; // Setting through a Model {}; loopbackSocket; MyModelcustomAuthentication = authentication;
loopbackSocket.onConnected(handler)
Add a on connected handler.
Arguments
Name | Type | Description |
---|---|---|
handler |
handler function or object |
Function called with (socket, credentials, [cb]) arguments or object like { model: Model, method: methodName } where Model is a class and methodName is one of its methods (defined or to be defined) with like handler function . |
Handler function
If argument cb
is not defined then the returned value will be a the handler response, and if this value is a promise, then it will be resolved before.
Name | Type | Description |
---|---|---|
socket |
object |
Socket connected. Required. |
credentials |
object |
Credentials received. Required. |
[cb] |
function |
Callback with (err, success) arguments to async return value with NodeJs callback style. Optional. |
Example
// Authentication function with NodeJs callback style { User;} // Authentication function with direct value returned o Promise style { return User; // return data or a promise} // Direct addingloopbackSocket; // Adding through a Model {}; loopbackSocket; MyModelcustomOnConnectedHandler = customOnConnectedHandler;
loopbackSocket.removeOnConnected(handler)
Remove a connected handler
Arguments
Name | Type | Description |
---|---|---|
handler |
function or object |
Function called with (socket, credentials, [cb]) arguments or object like { model: Model, method: methodName } where Model is a class and methodName is one of its methods (defined or to be defined) with like handler function . |
Example
// Direct removeloopbackSocket; // Remove Model method {}; loopbackSocket;
loopbackSocket.defineMethod(methodName, method)
Define a method to call by socket connection or replace one existing.
Arguments
Name | Type | Description |
---|---|---|
methodName |
string |
Method name. |
method |
method function or object |
Function called with (socket, credentials, args, [cb]) arguments or object like { model: Model, method: methodName } where Model is a class and methodName is one of its methods (defined or to be defined) with like method function . |
Method function
If argument cb
is not defined then the returned value will be the method called reponse, and if this value is a promise, then it will be resolved before.
Name | Type | Description |
---|---|---|
socket |
object |
Socket connected. Required. |
credentials |
object |
Credentials received. Required. |
args . |
object |
Arguments to call method. Required. |
[cb] |
function |
Callback with (err, success) arguments to async return value with NodeJs callback style. Optional. |
Example
/// Method function with NodeJs callback style { let data; // Option 1 ; // Client receives { result: data } // Option 2 ; // Client receives { error: 'myError' } } /// Method function with direct value returned o Promise style { let dataOrPromise; // Option 1 return dataOrPromise; // Client receives { result: dataOrPromiseResolvedValue } // Option 2 throw 'myError'; // Client receives { error: 'myError' } } // Direct definitionloopbackSocket; // Definition through a Model {}; loopbackSocket; MyModelcustomMethod = customMethod;
loopbackSocket.removeMethod(methodName)
Remove a method of socket.
Arguments
Name | Type | Description |
---|---|---|
methodName |
string |
Method name to remove. |
Example
// Direct removeloopbackSocket;
Client side sample
const socket = ; socket; socket; socket; { // Call a defined socket method socket;}
Samples
Loopback + AngularJS:
https://github.com/arondn2/loopback-socket/tree/master/examples/loopback
Troubles
If you have any kind of trouble with it, just let me now by raising an issue on the GitHub issue tracker here:
https://github.com/arondn2/loopback-socket/issues
Also, you can report the orthographic errors in the READMEs files or comments. Sorry for that, I do not speak English.
Tests
npm test
or npm run cover
Contributing
In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.