08-27-周三_17-09-29
This commit is contained in:
30
node_modules/sockjs/examples/test_server/README.md
generated
vendored
Normal file
30
node_modules/sockjs/examples/test_server/README.md
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
SockJS test server
|
||||
==================
|
||||
|
||||
In order to test sockjs server implementation the server needs to
|
||||
provide a standarized sockjs endpoint that will can used by various
|
||||
sockjs-related tests. For example by QUnit or
|
||||
[Sockjs-protocol](https://github.com/sockjs/sockjs-protocol) tests.
|
||||
|
||||
This small code does exactly that - runs a simple server that supports
|
||||
the following SockJS services:
|
||||
|
||||
* `/echo`
|
||||
* `/disabled_websocket_echo`
|
||||
* `/cookie_needed_echo`
|
||||
* `/close`
|
||||
* `/ticker`
|
||||
* `/amplify`
|
||||
* `/broadcast`
|
||||
|
||||
If you just want to quickly run it:
|
||||
|
||||
npm install
|
||||
node server.js
|
||||
|
||||
|
||||
If you want to run do development it's recommended to run `make
|
||||
test_server` from the top `sockjs-node` directory:
|
||||
|
||||
cd ../..
|
||||
make test_server
|
9
node_modules/sockjs/examples/test_server/config.js
generated
vendored
Normal file
9
node_modules/sockjs/examples/test_server/config.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
exports.config = {
|
||||
server_opts: {
|
||||
sockjs_url: 'http://localhost:8080/lib/sockjs.js',
|
||||
websocket: true
|
||||
},
|
||||
|
||||
port: 8081,
|
||||
host: '0.0.0.0'
|
||||
};
|
7
node_modules/sockjs/examples/test_server/package.json
generated
vendored
Normal file
7
node_modules/sockjs/examples/test_server/package.json
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "sockjs-test-server",
|
||||
"version": "0.0.0-unreleasable",
|
||||
"dependencies": {
|
||||
"sockjs": "*"
|
||||
}
|
||||
}
|
19
node_modules/sockjs/examples/test_server/server.js
generated
vendored
Normal file
19
node_modules/sockjs/examples/test_server/server.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
var http = require('http');
|
||||
var config = require('./config').config;
|
||||
var sockjs_app = require('./sockjs_app');
|
||||
|
||||
|
||||
var server = http.createServer();
|
||||
server.addListener('request', function(req, res) {
|
||||
res.setHeader('content-type', 'text/plain');
|
||||
res.writeHead(404);
|
||||
res.end('404 - Nothing here (via sockjs-node test_server)');
|
||||
});
|
||||
server.addListener('upgrade', function(req, res){
|
||||
res.end();
|
||||
});
|
||||
|
||||
sockjs_app.install(config.server_opts, server);
|
||||
|
||||
console.log(" [*] Listening on", config.host + ':' + config.port);
|
||||
server.listen(config.port, config.host);
|
85
node_modules/sockjs/examples/test_server/sockjs_app.js
generated
vendored
Normal file
85
node_modules/sockjs/examples/test_server/sockjs_app.js
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
var sockjs = require('sockjs');
|
||||
|
||||
exports.install = function(opts, server) {
|
||||
var sjs_echo = sockjs.createServer(opts);
|
||||
sjs_echo.on('connection', function(conn) {
|
||||
console.log(' [+] echo open ' + conn);
|
||||
conn.on('close', function() {
|
||||
console.log(' [-] echo close ' + conn);
|
||||
});
|
||||
conn.on('data', function(m) {
|
||||
var d = JSON.stringify(m);
|
||||
console.log(' [ ] echo message ' + conn,
|
||||
d.slice(0,64)+
|
||||
((d.length > 64) ? '...' : ''));
|
||||
conn.write(m);
|
||||
});
|
||||
});
|
||||
|
||||
var sjs_close = sockjs.createServer(opts);
|
||||
sjs_close.on('connection', function(conn) {
|
||||
console.log(' [+] clos open ' + conn);
|
||||
conn.close(3000, "Go away!");
|
||||
conn.on('close', function() {
|
||||
console.log(' [-] clos close ' + conn);
|
||||
});
|
||||
});
|
||||
|
||||
var sjs_ticker = sockjs.createServer(opts);
|
||||
sjs_ticker.on('connection', function(conn) {
|
||||
console.log(' [+] ticker open ' + conn);
|
||||
var tref;
|
||||
var schedule = function() {
|
||||
conn.write('tick!');
|
||||
tref = setTimeout(schedule, 1000);
|
||||
};
|
||||
tref = setTimeout(schedule, 1000);
|
||||
conn.on('close', function() {
|
||||
clearTimeout(tref);
|
||||
console.log(' [-] ticker close ' + conn);
|
||||
});
|
||||
});
|
||||
|
||||
var broadcast = {};
|
||||
var sjs_broadcast = sockjs.createServer(opts);
|
||||
sjs_broadcast.on('connection', function(conn) {
|
||||
console.log(' [+] broadcast open ' + conn);
|
||||
broadcast[conn.id] = conn;
|
||||
conn.on('close', function() {
|
||||
delete broadcast[conn.id];
|
||||
console.log(' [-] broadcast close' + conn);
|
||||
});
|
||||
conn.on('data', function(m) {
|
||||
console.log(' [-] broadcast message', m);
|
||||
for(var id in broadcast) {
|
||||
broadcast[id].write(m);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var sjs_amplify = sockjs.createServer(opts);
|
||||
sjs_amplify.on('connection', function(conn) {
|
||||
console.log(' [+] amp open ' + conn);
|
||||
conn.on('close', function() {
|
||||
console.log(' [-] amp close ' + conn);
|
||||
});
|
||||
conn.on('data', function(m) {
|
||||
var n = Math.floor(Number(m));
|
||||
n = (n > 0 && n < 19) ? n : 1;
|
||||
console.log(' [ ] amp message: 2^' + n);
|
||||
conn.write(Array(Math.pow(2, n)+1).join('x'));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
sjs_echo.installHandlers(server, {prefix:'/echo',
|
||||
response_limit: 4096}),
|
||||
sjs_echo.installHandlers(server, {prefix:'/disabled_websocket_echo',
|
||||
websocket: false});
|
||||
sjs_echo.installHandlers(server, {prefix:'/cookie_needed_echo',
|
||||
jsessionid: true});
|
||||
sjs_close.installHandlers(server, {prefix:'/close'});
|
||||
sjs_ticker.installHandlers(server, {prefix:'/ticker'});
|
||||
sjs_amplify.installHandlers(server, {prefix:'/amplify'});
|
||||
sjs_broadcast.installHandlers(server, {prefix:'/broadcast'});
|
||||
};
|
Reference in New Issue
Block a user