shane
shane

Reputation: 246

Connecting to Cayley serving over localhost

I've followed the 'Getting Started' guide in Cayley's documentation and installed Cayley on my remote server:

Getting Started: https://github.com/google/cayley

Server OS: CentOS 7.2.1511

I've added cayley to my $PATH:

echo $PATH :

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/csse/cayley/src/github.com/google/cayley

Here is my config file at /etc/cayley.cfg

{
  "database": "leveldb",
  "db_options": {
    "cache_size_mb": 2,
    "write_buffer_mb": 20
  },
  "db_path": "~/cayley/src/github.com/google/cayley/data/testdata.nq",
  "listen_host": "127.0.0.1",
  "listen_port": "64210",
  "read_only": false,
  "replication_options": {
    "ignore_missing": false,
    "ignore_duplicate": false
  },
  "timeout": 30
}

I serve cayley over http by simply doing:

cayley http

and the terminal outputs:

Cayley now listening on 127.0.0.1:64210

On my main machine (Mac OSX 10.10.5 Yosemite), I've used npm to install the cayley package and written a test:

##testconnection.js

var cayley = require('cayley');

var client = cayley("137.112.104.107");

var g = client.graph;

g.V().All(function(err, result) {
    if(err) {
        console.log('error');
   } else {
        console.log('result');
   }
});

However, it fails when I run it: node testconnection.js

error: Error: Invalid URI "137.112.104.107/api/v1/query/gremlin"

I'd like to connect to Cayley and modify the database from my test. I've found a great powerpoint full of Cayley information:

https://docs.google.com/presentation/d/1tCbsYym1kXWWDcnRU9ymj6xP0Nvgq-Qhy9WDmqWcM-o/edit#slide=id.g3776708f1_0319

As well as pertinent Cayley docs:

And a post on stackoverflow:

But I'm struggling to come up with a way to connect Cayley (on my remote machine) with my local machine. I'd like to connect with npm if possible, but am open to other options. Where am I going wrong?

Edit #1

I've appended the "http://" to my ip, so now it reads http://137.112.104.107. At that point, I solved another issue by performing

cayley init --config=/etc/cayley.cfg as mentioned by the author here

I've also removed the listen_post and listen_port from my config file (each individually first, then both), yet have still have the same socket hang up error. Here's a printout of client from the test script:

Client {
    host: 'http://137.112.104.107',
    request:
        { [Function]
        get: [Function],
        head: [Function],
        post: [Function],
        put: [Function],
        patch: [Function],
        del: [Function],
        cookie: [Function],
        jar: [Function],
        defaults: [Function] },
    graph: Gremlin { client: [Circular], query: [Function] },
    g: Gremlin { client: [Circular], query: [Function] },
    write: [Function: bound ],
    delete: [Function: bound ],
    writeFile: [Function: bound ]
}

Upvotes: 0

Views: 354

Answers (1)

Jørgen
Jørgen

Reputation: 2367

Your Cayley server is listening on 127.0.0.1 / localhost and therefor not reachable from another machine. To be able to reach it from a virtual machine or another computer on your network it needs to bind to an interface that is reachable.

If you configure host: 0.0.0.0 and check what is your network IP (I assume: 137.112.104.107) and connect it, it should work or you need to open it or forward the port on your firewall (depending on your network).

Upvotes: 0

Related Questions