Skip to content

psirenny/primus-racer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

primus-racer

A Primus plugin for the realtime model sync engine Racer.

Refer to the Primus docs on what can be configured. You can change the transport type, enable compression, etc...

Installation

npm install --save primus primus-racer ws

Example Server Usage

import http from 'http';
import Primus from 'primus';
import jsonParser from 'primus/parsers/json';
import racer from 'racer';
import racerPlugin = from 'primus-racer/lib/plugin';
const websocketTransformer = 'websockets';

const createApp = (backend, port) => express()
  .use(backend.modelMiddleware())
  .use((req, res, next) => {
    const model = req.getModel();
    model.set('_primus.url', 'http://localhost:' + port);
    next();
  });

const backend = racer.createBackend(/* ... */);
const httpPort = 3000;
const httpServer = http.createServer(
  createApp(backend, httpPort)
);

// If you're using Derby you should set this flag to true
// because Derby uses the cluster module in development
const iknowclusterwillbreakconnections = process.env.NODE_ENV === 'development';

const primus = new Primus(httpServer, {
  iknowclusterwillbreakconnections: iknowclusterwillbreakconnections,
  parser: jsonParser,
  pathname: '/primus',
  plugin: {racer: racerPlugin(backend)},
  transformer: websocketTransformer
});

httpServer.listen(httpPort);

Example Client Usage

import derby from 'derby';
import jsonParser from 'primus/parsers/json';
import websocketTransformer from 'primus/transformers/websockets/client';
import {createPrimusClientClass, pluginClient as racerPlugin} from 'primus-racer';

derby.use(derby => {
  const Primus = createPrimusClientClass({
    parser: jsonParser,
    pathname: '/primus',
    plugin: {racer: racerPlugin()},
    transformer: websocketTransformer
  });

  derby.Model.prototype._createSocket = data => {
    const socket = {};
    const url = data.collections._primus.url;
    const primus = new Primus({racerModelSocket: socket, url: url});
    return socket;
  };
});

About

Racer transport using Primus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published