github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/sockjs-client-1.1.0/tests/support/sockjs_app.js (about) 1 /* eslint camelcase: 0 */ 2 'use strict'; 3 var sockjs = require('sockjs'); 4 var debug = require('debug')('sockjs-client:test-server:app'); 5 6 exports.install = function(opts, server) { 7 var sjs_echo = sockjs.createServer(opts); 8 sjs_echo.on('connection', function(conn) { 9 debug(' [+] echo open ' + conn); 10 conn.on('close', function() { 11 debug(' [-] echo close ' + conn); 12 }); 13 conn.on('data', function(m) { 14 var d = JSON.stringify(m); 15 debug(' [ ] echo message ' + conn, 16 d.slice(0, 64) + 17 ((d.length > 64) ? '...' : '')); 18 conn.write(m); 19 }); 20 }); 21 22 var sjs_close = sockjs.createServer(opts); 23 sjs_close.on('connection', function(conn) { 24 debug(' [+] close open ' + conn); 25 conn.close(3000, 'Go away!'); 26 conn.on('close', function() { 27 debug(' [-] close close ' + conn); 28 }); 29 }); 30 31 var sjs_ticker = sockjs.createServer(opts); 32 sjs_ticker.on('connection', function(conn) { 33 debug(' [+] ticker open ' + conn); 34 var tref; 35 var schedule = function() { 36 conn.write('tick!'); 37 tref = setTimeout(schedule, 1000); 38 }; 39 tref = setTimeout(schedule, 1000); 40 conn.on('close', function() { 41 clearTimeout(tref); 42 debug(' [-] ticker close ' + conn); 43 }); 44 }); 45 46 var broadcast = {}; 47 var sjs_broadcast = sockjs.createServer(opts); 48 sjs_broadcast.on('connection', function(conn) { 49 debug(' [+] broadcast open ' + conn); 50 broadcast[conn.id] = conn; 51 conn.on('close', function() { 52 delete broadcast[conn.id]; 53 debug(' [-] broadcast close' + conn); 54 }); 55 conn.on('data', function(m) { 56 debug(' [-] broadcast message', m); 57 for(var id in broadcast) { 58 broadcast[id].write(m); 59 } 60 }); 61 }); 62 63 var sjs_amplify = sockjs.createServer(opts); 64 sjs_amplify.on('connection', function(conn) { 65 debug(' [+] amp open ' + conn); 66 conn.on('close', function() { 67 debug(' [-] amp close ' + conn); 68 }); 69 conn.on('data', function(m) { 70 var n = Math.floor(Number(m)); 71 n = (n > 0 && n < 19) ? n : 1; 72 debug(' [ ] amp message: 2^' + n); 73 conn.write(new Array(Math.pow(2, n) + 1).join('x')); 74 }); 75 }); 76 77 78 sjs_echo.installHandlers(server, {prefix: '/echo', 79 response_limit: 4096}); 80 sjs_echo.installHandlers(server, {prefix: '/disabled_websocket_echo', 81 websocket: false}); 82 sjs_echo.installHandlers(server, {prefix: '/cookie_needed_echo', 83 jsessionid: true}); 84 sjs_close.installHandlers(server, {prefix: '/close'}); 85 sjs_ticker.installHandlers(server, {prefix: '/ticker'}); 86 sjs_amplify.installHandlers(server, {prefix: '/amplify'}); 87 sjs_broadcast.installHandlers(server, {prefix: '/broadcast'}); 88 };