From 0fd8fb595f4e33a2dfe95faa6df5a195a297e9ce Mon Sep 17 00:00:00 2001 From: Kagami Hiiragi Date: Tue, 3 Feb 2015 23:13:27 +0300 Subject: [PATCH] More net stub --- lib/net/tcp.js | 3 ++- lib/net/ws.browser.js | 29 +++++++++++++++++++++++++++++ lib/net/ws.js | 38 ++++++++++++++++++++++++++++++++++++++ tests/functional.js | 2 +- 4 files changed, 70 insertions(+), 2 deletions(-) diff --git a/lib/net/tcp.js b/lib/net/tcp.js index c6dd9f7..bd57b12 100644 --- a/lib/net/tcp.js +++ b/lib/net/tcp.js @@ -1,5 +1,6 @@ /** - * TCP transport for Node. Should be compatible with PyBitmessage. + * TCP transport. Should be compatible with PyBitmessage. Available only + * for Node.js. * @module bitmessage/net/tcp */ diff --git a/lib/net/ws.browser.js b/lib/net/ws.browser.js index e69de29..c86a3d9 100644 --- a/lib/net/ws.browser.js +++ b/lib/net/ws.browser.js @@ -0,0 +1,29 @@ +/** + * WebSocket transport. Generally needed because browsers can't handle + * TCP sockets so we proxy messages from clients via WebSocket into TCP + * data packets. + */ + +"use strict"; + +var inherits = require("inherits"); +var assert = require("../_util").assert; +var BaseTransport = require("./base").BaseTransport; + +/** + * WebSocket transport constructor. + * @constructor + * @static + */ +function Transport() { + Transport.super_.call(this); +} + +inherits(Transport, BaseTransport); + +Transport.prototype.connect = function(opts) { + assert(!this._client, "Already connected"); + this._client = new WebSocket(opts); +}; + +exports.Transport = Transport; diff --git a/lib/net/ws.js b/lib/net/ws.js index e69de29..aae8967 100644 --- a/lib/net/ws.js +++ b/lib/net/ws.js @@ -0,0 +1,38 @@ +/** + * WebSocket transport. Generally needed because browsers can't handle + * TCP sockets so we proxy messages from clients via WebSocket into TCP + * data packets. + * @module bitmessage/net/ws + */ + +"use strict"; + +var inherits = require("inherits"); +var WebSocket = require("ws"); // jshint ignore:line +var assert = require("../_util").assert; +var BaseTransport = require("./base").BaseTransport; + +var WebSocketServer = WebSocket.Server; + +/** + * WebSocket transport constructor. + * @constructor + * @static + */ +function Transport() { + Transport.super_.call(this); +} + +inherits(Transport, BaseTransport); + +Transport.prototype.connect = function(opts) { + assert(!this._client, "Already connected"); + this._client = new WebSocket(opts); +}; + +Transport.prototype.listen = function(opts) { + assert(!this._server, "Already listening"); + this._server = new WebSocketServer(opts); +}; + +exports.Transport = Transport; diff --git a/tests/functional.js b/tests/functional.js index 562fe54..d90d2f5 100644 --- a/tests/functional.js +++ b/tests/functional.js @@ -1,7 +1,7 @@ var bitmessage = require("../lib"); var structs = bitmessage.structs; var message = structs.message; -// var WsTransport = require("../lib/net/ws").Transport; +var WsTransport = require("../lib/net/ws").Transport; if (!process.browser) { var TcpTransport = require("../lib/net/tcp").Transport;