0.1.0 • Published 12 years ago
tart-transport-http v0.1.0
tart-transport-http
Stability: 1 - Experimental
HTTP transport implementation for Tiny Actor Run-Time in JavaScript.
Contributors
Overview
An implementation of a HTTP transport for Tiny Actor Run-Time in JavaScript.
Usage
To run the below example run:
npm run readme"use strict";
var http = require('http');
var tart = require('tart');
var transport = require('../index.js');
var sponsor = tart.minimal();
var send = sponsor(transport.sendBeh);
var receivedMessageCount = 0;
var receptionist = sponsor(function (message) {
console.log('received message:', message);
receivedMessageCount++;
if (receivedMessageCount >= 2) {
close(); // close listening server
}
});
var serverCapabilities = transport.server(receptionist);
var close = sponsor(serverCapabilities.closeBeh);
var listen = sponsor(serverCapabilities.listenBeh);
var fail = sponsor(function (error) {
console.dir(error);
});
var listenAck = sponsor(function listenAckBeh(message) {
console.log('transport listening on http://' + message.host + ':' + message.port);
send({
address: 'http://localhost:7847/#t5YM5nxnJ/xkPTo3gtHEyLdwMRFIwyJOv5kvcFs+FoMGdyoDNgSLolq0',
content: '{"some":{"json":"content"},"foo":true}',
fail: fail,
ok: function () {
console.log('foo sent');
}
});
send({
address: 'http://localhost:7847/#I0InGCVn0ApX0YBnF5+JFMheKOajHkaTrNthYRI2hOj4GrM5IaWO1Cv0',
content: '{"some":{"json":"content"},"bar":true}',
fail: fail,
ok: function () {
console.log('bar sent');
}
});
});
listen({
host: 'localhost',
port: 7847,
ok: listenAck,
fail: fail
});Tests
npm testDocumentation
Public API
- transport.sendBeh
- transport.server(receptionist)
- serverCapabilities.closeBeh
- serverCapabilities.listenBeh
transport.sendBeh
Actor behavior that will attempt to send messages over TLS.
Message format:
address: String HTTP address in URI format. Scheme, host, and port are required. Framgment is optional but usually necessary. For example:http://localhost:7847/#t5YM5nxnJ/xkPTo....content: String JSON content to be sent.fail: Actorfunction (error) {}(Default: undefined) Optional actor to reporterror(if any).ok: Actorfunction () {}(Default: undefined) Optional actor to report successful send to the destination.
var send = sponsor(transport.sendBeh);
send({
address: 'tcp://localhost:7847/#ZkiLrAwGX7N1eeOXXMAeoVp7vsYJKeISjfT5fESfkRiZOIpkPx1bAS8y',
content: '{"some":{"json":"content"}}'
});transport.server(receptionist)
receptionist: Actorfunction (message) {}Actor to forward traffic received by this server in{address: <URI>, contents: <json>}format.- Return: Object An object containing behaviors for listen and close capabilities.
closeBeh: serverCapabilities.closeBehlistenBeh: serverCapabilities.listenBeh
Creates an entangled pair of capabilities that will control a single HTTP server.
serverCapabilities.closeBeh
Actor behavior that will close a listening server.
Message is an ack Actor function () {}, an actor that will be sent an empty message once the server closes.
var serverCapabilities = transport.server(receptionist);
var close = sponsor(serverCapabilities.closeBeh);
close(sponsor(function ack() {
console.log('acked close');
});serverCapabilities.listenBeh
Actor behavior that will create a new listening HTTP server.
Message format:
host: String HTTP host to listen on.port: Number HTTP port to listen on.ok: Actorfunction (message) {}Optional actor to receive acknowledgment once the server is listening.fail: Actorfunction (error) {}Optional actor to receive any errors when starting the HTTP transport.
var serverCapabilities = transport.server(receptionist);
var listen = sponsor(serverCapabilities.listenBeh);
listen({
host: 'localhost',
port: 7847,
ok: sponsor(function listenAckBeh(message) {
console.log('transport listening on tcp://' + message.host + ':' + message.port);
}),
fail: sponsor(function failBeh(message) {
console.error(message);
})
});Sources
0.1.0
12 years ago
