Search code examples
node.jsrethinkdbdeepstream.io

Cannot connect to DeepStream Node.js server if using any custom plugins


So, if I use my DeepStream server as the following

const {Deepstream} = require('@deepstream/server')

const server = new Deepstream({

server.start()

it's working just fine I can connect to it from my frontend app like the following

const {DeepstreamClient} = require('@deepstream/client')
const client = new DeepstreamClient('192.168.88.238:6020')
client.login()

but If I add MongoDB storage instance or RethinkDB NPM - RethinkDB

const {Deepstream} = require('@deepstream/server')

const server = new Deepstream({
    storage: {
        name: 'rethinkdb',
        options: {
            host: 'localhost',
            port: 28015
        }
    }
})

// start the server
server.start()

I get the following error message when trying to reach my ds server. (I've also tried to connect via WSS:// instead of WS://) enter image description here


Solution

  • So hi everybody who has the same problem as me... I figured it out! So first of all what the npm packages documentation says from the usage of the Mongo DB driver is completely out of data

    so what they say how should u use the npm package :

    var Deepstream = require( 'deepstream.io' ),
        MongoDBStorageConnector = require( 'deepstream.io-storage-mongodb' ),
        server = new Deepstream();
     
    server.set( 'storage', new MongoDBStorageConnector( {
      connectionString: 'mongodb://test:[email protected]:10087/munchkin-dev',
      splitChar: '/'
    }));
     
    server.start();
    

    INSTEAD OF ALL THIS!

    You ain't really need the 'deep stream.io-storage-MongoDB' because it's an old module (based on: enter image description here), and u don't really need to use this way...

    The correct usage of the MongoDB connector :

    const {Deepstream} = require('@deepstream/server');
    const server = new Deepstream({
        storage: {
            name: "mongodb",
            options: {
                connectionString: MONGO_CONNECTION_STRING ,
                splitChar: '/'
            }
        }
    });
    
    server.start();
    

    or you can also create a config. yaml file from all this :

    storage:
      name: mongodb
      options:
        connectionString: 'MONGO_CONNECTION_STRING'
        # optional database name, defaults to `deepstream`
        database: 'DATABASE_NAME'
        # optional table name for records without a splitChar
        # defaults to deepstream_docs
        defaultCollection: 'COLLECTION_NAME'
    
        # optional character that's used as part of the
        # record names to split it into a table and an id part
        splitChar: '/'
    

    and pass it to the deep stream constructor as below:

    const {Deepstream} = require('@deepstream/server');
    const server = new Deepstream('config.yaml');
    
    server.start();