From 3eca6a6b04fd21136e8e3c3b3179f658adb055d8 Mon Sep 17 00:00:00 2001 From: kmlx Date: Thu, 20 Jun 2013 12:20:36 +0300 Subject: [PATCH] this fixes #4 --- examples/sockjs-express3/README.md | 19 ++++++ examples/sockjs-express3/index.html | 96 +++++++++++++++++++++++++++ examples/sockjs-express3/package.json | 9 +++ examples/sockjs-express3/server.js | 55 +++++++++++++++ 4 files changed, 179 insertions(+) create mode 100644 examples/sockjs-express3/README.md create mode 100644 examples/sockjs-express3/index.html create mode 100644 examples/sockjs-express3/package.json create mode 100644 examples/sockjs-express3/server.js diff --git a/examples/sockjs-express3/README.md b/examples/sockjs-express3/README.md new file mode 100644 index 0000000..c998ddf --- /dev/null +++ b/examples/sockjs-express3/README.md @@ -0,0 +1,19 @@ +WebSocket-multiplex SockJS example +================================== + +To run this example, first install dependencies: + + npm install + +And run a server: + + node server.js + + +That will spawn an http server at http://127.0.0.1:9999/ which will +serve both html (served from the current directory) and also SockJS +service (under the [/multiplex](http://127.0.0.1:9999/multiplex) +path). + +With that set up, WebSocket-multiplex is able to push three virtual +connections over a single SockJS connection. See the code for details. diff --git a/examples/sockjs-express3/index.html b/examples/sockjs-express3/index.html new file mode 100644 index 0000000..f3be5c3 --- /dev/null +++ b/examples/sockjs-express3/index.html @@ -0,0 +1,96 @@ + + + + + + + +

SockJS Multiplex example

+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + + diff --git a/examples/sockjs-express3/package.json b/examples/sockjs-express3/package.json new file mode 100644 index 0000000..99bef92 --- /dev/null +++ b/examples/sockjs-express3/package.json @@ -0,0 +1,9 @@ +{ + "name" : "websocket-multiplex-sockjs-express3-example", + "version" : "0.0.0-unreleasable", + "dependencies" : { + "express" : "3.0.0", + "sockjs" : "0.3.x", + "websocket-multiplex" : "*" + } +} diff --git a/examples/sockjs-express3/server.js b/examples/sockjs-express3/server.js new file mode 100644 index 0000000..236015a --- /dev/null +++ b/examples/sockjs-express3/server.js @@ -0,0 +1,55 @@ +var http = require('http'); +var express = require('express'); +var sockjs = require('sockjs'); + +var websocket_multiplex = require('websocket-multiplex'); + + +// 1. Setup SockJS server +var sockjs_opts = {sockjs_url: "http://cdn.sockjs.org/sockjs-0.3.min.js"}; +var service = sockjs.createServer(sockjs_opts); + + +// 2. Setup multiplexing +var multiplexer = new websocket_multiplex.MultiplexServer(service); + +var ann = multiplexer.registerChannel('ann'); +ann.on('connection', function(conn) { + conn.write('Ann says hi!'); + conn.on('data', function(data) { + conn.write('Ann nods: ' + data); + }); +}); + +var bob = multiplexer.registerChannel('bob'); +bob.on('connection', function(conn) { + conn.write('Bob doesn\'t agree.'); + conn.on('data', function(data) { + conn.write('Bob says no to: ' + data); + }); +}); + +var carl = multiplexer.registerChannel('carl'); +carl.on('connection', function(conn) { + conn.write('Carl says goodbye!'); + // Explicitly cancel connection + conn.end(); +}); + + +// 3. Express server +var app = express(); +var server = http.createServer(app); + +service.installHandlers(server, {prefix:'/multiplex'}); + +console.log(' [*] Listening on 0.0.0.0:9999' ); +app.listen(9999, '0.0.0.0'); + +app.get('/', function (req, res) { + res.sendfile(__dirname + '/index.html'); +}); + +app.get('/multiplex.js', function (req, res) { + res.sendfile(__dirname + '/multiplex.js'); +});