UNPKG

thread-sse

Version:

Thread-SSE is a library for Node.js and web browsers to develop security and high-performance SSE (Server-Send-Events) applications.

358 lines (273 loc) 12.3 kB
/** * Thread-SSE Unit testing server-side * * (c) Copyright 2020-present Richard Li <richard.li@w3plan.net> * License: MIT */ const http = require('http'); const fs = require('fs'); const path = require('path'); // Loads Thread-SSE module const { getConnectionPath, setTsseConnection, getTsseServicePath, getsharedDataPath, tsseServer, libStyleGraph, responseClient, updateTsseData } = require('../index'); // Sets up testing server var server = http.createServer ( function (req, res) { var requestUrl = req.url; var tsseServicePath = getTsseServicePath(req); if (requestUrl === "/js/tsse.js") { // the default Thread-SSE client library libStyleGraph(req, res, "/public/js/tsse.js"); } else if (requestUrl === "/test/index.html") { // Thread-SSE Unit testing client var filePath = path.join(__dirname, "./index.html"); try { var content = fs.readFileSync(filePath, 'utf8'); responseClient(req, res, content); } catch (er) { console.log("Server can't read the client file.") } } else if (requestUrl === getConnectionPath()) { // Handles Thread-SSE connection request setTsseConnection(req, res); } else if (requestUrl === tsseServicePath && tsseServicePath !== '') { // Thread-SSE server for the specific client tsseServer(tsseServicePath, res); // Suppose Thread-SSE users are visitors var tsseUser = ''; setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1000", "She sells sea shells by the sea shore.\nThe shells she sells are surely seashells.\nSo if she sells shells on the seashore,\nI'm sure she sells seashore shells"); }, 1000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1002", "A non-empty string"); }, 2000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1004", ""); }, 3000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1006", "100.25"); }, 4000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1008", "15"); }, 5000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1010", "5.27"); }, 6000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1012", "3/5"); }, 7000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1014", "0x53656C66204465736372697074696F6E204A534F4E20536368656D61"); }, 8000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1016", "0123 0145 0154 0146 040"); }, 9000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1018", "010011110110111000101101011011100110111101110100011010010110001101100101"); }, 10000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1020", "https://avatars2.githubusercontent.com/u/18145628?s=400&u=d9b9f7b81ba63e045478001da75f576927bfaf23&v=4"); }, 11000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1022", "/u/18145628?s=400&u=d9b9f7b81ba63e045478001da75f576927bfaf23&v=4"); }, 12000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1024", "https"); }, 13000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1026", "richard:psword"); }, 14000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1028", "en.wikipedia.org"); }, 15000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1030", "91.198.174.192"); }, 16000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1032", "2001:db8:85a3:8d3:1319:8a2e:370:7348"); }, 17000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1034", "300"); }, 18000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1036", "../js/tsse.js"); }, 19000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1038", "?s=400&u=d9b9f7b81ba63e045478001da75f576927bfaf23&v=4"); }, 20000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1040", "#pt001"); }, 21000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1042", "jack.ban@example.com"); }, 22000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1044", "jack.ban"); }, 23000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1050", "en"); }, 24000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1052", "ca"); }, 25000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1054", "9624aeef-afac-43b7-aae9-f5278da52d17"); }, 26000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1056", "83 101 108 102 32 68 101 115 99 114 105 112 116 105 111 110 32 74 83 79 78 32 83 99 104 101 109 97"); }, 27000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1060", "Self%20Description%20JSON%20Schema"); }, 28000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1070", "2020-06-19T21:58:14.963Z"); }, 29000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1072", "2020-06-19"); }, 30000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1074", "21:58:14"); }, 31000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1076", "2020"); }, 32000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1078", "06"); }, 33000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1080", "19"); }, 34000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1082", "21"); }, 35000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1084", "58"); }, 36000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1086", "14.963"); }, 37000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1088", "3500"); }, 38000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1090", "p{font-family:verdana; font-size:18px;}"); }, 39000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1092", ".spacious"); }, 40000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1094", "{color: red; text-align: center;}"); }, 41000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1096", "rgb(255,69,0)"); }, 42000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1200", 12.56); }, 43000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1202", 25); }, 44000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1204", -5.28); }, 45000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1206", 37.29); }, 46000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1208", 1.26); }, 47000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1210", -2.35); }, 48000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1212", 52); }, 49000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1214", 3); }, 50000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1216", -9); }, 51000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1218", 0); }, 52000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1300", true); }, 53000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1302", false); }, 54000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "1350", null); }, 55000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3000", [-6.67, "x", null, "y", 100, true, [], {}, "b"]); }, 56000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3002", ["a", "b", "5.1", "x", "-10"]); }, 57000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3004", [2.34, 5, -6.67, 10.28]); }, 58000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3006", [8, 4, 3, 2, 10, 15]); }, 59000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3008", "6, 20, 2"); }, 60000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3010", []); }, 61000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3100", {"city": "New York", "name": "Jonesy Band", "education": "No College", "age": 16}); }, 62000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3110", {}); }, 63000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3200", new Map( [ ["a", -10], ["b", 5.1] ] )); }, 64000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3400", "She sells sea shells by the sea shore. The shells she sells are surely seashells."); }, 65000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3430", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="); }, 66000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3450", "QVtP2fwKNw59"); }, 67000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3460", "p3P*f$9&=S-rT()"); }, 68000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3500", "/^((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}$/", "(647) 823-7580"); }, 69000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3530", "https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F18145628%3Fs%3D400%26u%3Dd9b9f7b81ba63e045478001da75f576927bfaf23%26v%3D4", "url encoding"); }, 70000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3550", "fdd1fc91732d46de9ba3a604c5fdffc7", "md5"); }, 71000 ); setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "3560", "de581449385caeecdea8bbc02ce49c4f:f516dfb84b9051ed85b89cdc3a8ab7f5", "md5 salted"); }, 72000 ); // Closes Thread-SSE connection setTimeout( function(){ updateTsseData(tsseServicePath, tsseUser, "8990"); }, 73000 ); } } ); // Starts testing sever server.listen(3000, "localhost", () => console.log('Unit Test listening at http://localhost:3000'));