-
Notifications
You must be signed in to change notification settings - Fork 1
Hello World HOWTO
The canonical Hello World
example can be found in howto/hello-world
crosstalk.on( 'hello', function ( params, callback ) {
if ( callback ) callback( null, { hello : "world" } );
});
Upon completion of this HOWTO you will accomplish all of the following:
- Create a new Crosstalk worker project
- Deploy a Crosstalk worker to Crosstalk Swarm
- List workers deployed on Crosstalk Swarm
- Start a worker on Crosstalk Swarm
- List running workers on Crosstalk Swarm
- Use Crosstalk IDE to send a message to a worker running on Crosstalk Swarm
- Stop a worker running on Crosstalk Swarm
Starting in a directory where you want your worker projects to reside:
~$ mkdir hello-world
~$ cd hello-world
Create a file hello-world/hello.js
with the following contents:
crosstalk.on( 'hello', function ( params, callback ) {
if ( callback ) callback( null, { hello : "world" } );
});
At this point, your project directory structure should look like:
hello-world
|-- hello.js
Create a file hello-world/package.json
with the following contents:
{
"name": "your-name-hello-world",
"version": "0.0.0",
"description": "Crosstalk 'hello world' worker",
"main": "hello.js",
"author": "Your Name <your.name@email.com>",
"crosstalk": {
"type": "worker"
},
"private": true
}
your-name-hello-world
should be replaced with your account name in place of your-name
. The global Crosstalk worker namespace is flat. So, by convention, your account name should be included in front of your worker name. For example, if your account name is bob
, then your hello-world
worker would be called bob-hello-world
.
The field "crosstalk": {"type": "worker"}
is required. It identifies the project as a Crosstalk worker project.
At this point, your project directory structure should look like:
hello-world
|-- hello.js
|-- package.json
Create a file hello-world/config.json
with the following contents:
{}
Our hello-world
worker does not use any configuration. The contents of this file are required when starting a worker later on. The contents are accessible from within the worker via:
var config = require( 'config' );
At this point, your project directory structure should look like:
hello-world
|-- config.json
|-- hello.js
|-- package.json
Assumptions:
-
crosstalk-cli
is available in directory$CROSSTALK_CLI_HOME
- Your workers directory is
$CROSSTALK_WORKERS
Run the following command:
~$ $CROSSTALK_CLI_HOME/bin/crosstalk worker create
You will receive a prompt:
prompt: Path to Crosstalk worker directory:
In the prompt enter the path to your worker:
prompt: Path to Crosstalk worker directory: $CROSSTALK_WORKERS/hello-world
Your worker will be created:
info: Creating worker your-name-hello-world@0.0.0
info: Worker your-name-hello-world@0.0.0 created.
info: Crosstalk OK
Run the following command:
~$ $CROSSTALK_CLI_HOME/bin/crosstalk worker list
You will see a list of your created workers:
info: Retrieving uploaded worker list
data: workers(1):
data: your-name-hello-world@0.0.0
info: Crosstalk OK
Run the following command:
~$ $CROSSTALK_CLI_HOME/bin/crosstalk worker start your-name-hello-world@0.0.0
You will receive prompt for your configuration file:
prompt: Path to worker configuration JSON file:
Enter path to your configuration file:
prompt: Path to worker configuration JSON file: $CROSSTALK_WORKERS/hello-world/config.json
Your worker will be started:
info: Starting worker your-name-hello-world@0.0.0
info: Worker your-name-hello-world@0.0.0 started as crosstalk-drone-worker-7ee654e1-a009-4166-8402-8660be371d99
info: Crosstalk OK
Run the following command:
~$ $CROSSTALK_CLI_HOME/bin/crosstalk worker running
You will see a list of your running workers:
info: Retrieving running worker list
data: workers(1):
data: your-name-hello-world@0.0.0: crosstalk-drone-worker-7ee654e1-a009-4166-8402-8660be371d99
info: Crosstalk OK
Create a file hello-world/test/manual.js
with the following contents:
var ide = require( 'crosstalk-ide' )();
ide.send(
"<YOUR CROSSTALK TOKEN>",
"hello",
{},
null,
function ( error, response ) {
console.log( error, response );
}
);
You will find <YOUR CROSSTALK TOKEN>
in $CROSSTALK_CLI_HOME/config/config.json
. Copy and paste it from there.
Additionally, you will need to npm link crosstalk-ide
in order to make it available for your manual.js
test. To link, navigate to your $CROSSTALK_WORKERS/hello-world
and execute the following command:
$CROSSTALK_WORKERS/hello-world$ npm link crosstalk-ide
Now you should be ready to use crosstalk-ide
.
At this point, your project directory structure should look like:
hello-world
|-- test
|-- manual.js
|-- config.json
|-- hello.js
|-- package.json
Run the manual test:
~/hello-world$ node test/manual.js
You should see the following in the console:
{"message":"SENDING TO CROSSTALK","data":{"message":"hello","params":{},"scope":null},"level":"info","timestamp":"2012-11-24T22:41:12.698Z"}
{"message":"STATUS CODE","data":{"statusCode":"200"},"level":"info","timestamp":"2012-11-24T22:41:15.474Z"}
{"message":"RESPONSE","data":{"message":"hello","response":{"hello":"world"}},"level":"info","timestamp":"2012-11-24T22:41:15.474Z"}
null { hello: 'world' }
Your worker is up and running! (The first three JSON lines are debug statements from crosstalk-ide
. The last line is the output from the callback you specified in manual.js
: console.log( error, response );
)
Run the following command (replace crosstalk-drone-worker-...
with the one for your worker):
~$ $CROSSTALK_CLI_HOME/bin/crosstalk worker stop crosstalk-drone-worker-7ee654e1-a009-4166-8402-8660be371d99
You will see confirmation that your worker was stopped:
info: Stopping worker crosstalk-drone-worker-7ee654e1-a009-4166-8402-8660be371d99
info: Worker crosstalk-drone-worker-7ee654e1-a009-4166-8402-8660be371d99 is stopping.
info: Crosstalk OK
Your worker is now stopped.
- Create a new Crosstalk worker project
- Deploy a Crosstalk worker to Crosstalk Swarm
- List workers deployed on Crosstalk Swarm
- Start a worker on Crosstalk Swarm
- List running workers on Crosstalk Swarm
- Use Crosstalk IDE to send a message to a worker running on Crosstalk Swarm
- Stop a worker running on Crosstalk Swarm