This library provides an easy way to send events to a web browser (or any other client) over HTTP.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test.js 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. var http = require("http");
  2. var Eventer = require(".");
  3. var fs = require("fs");
  4. var html =
  5. "<!DOCTYPE html>"+
  6. "<html>"+
  7. "<head>"+
  8. "<title>WebEvents</title>"+
  9. "</head>"+
  10. "<body>"+
  11. "<div "+
  12. "id='thing' "+
  13. "style='position: absolute; width: 30px; height: 30px; background: blue;'></div>"+
  14. "<script src='/client.js'></script>"+
  15. "<script>"+
  16. "var events = WebEvents();"+
  17. "events.on('move', function(evt) {"+
  18. "var elem = document.getElementById('thing');"+
  19. "elem.style.top = evt.y+'px';"+
  20. "elem.style.left = evt.x+'px';"+
  21. "});"+
  22. "</script>"+
  23. "</body>"+
  24. "</html>";
  25. var eventer = Eventer();
  26. http.createServer(function(req, res) {
  27. if (req.url == "/") {
  28. res.writeHead(200, {
  29. "Content-Type": "text/html",
  30. });
  31. res.end(html);
  32. } else if (req.url == "/client.js") {
  33. fs.createReadStream("client.js")
  34. .pipe(res)
  35. .on("error", err => res.end(err.toString()));
  36. } else if (req.url.indexOf("/webevents") === 0) {
  37. eventer.handle(req, res);
  38. }
  39. }).listen(8080);
  40. // Just keep track of some coordinates to send to the client as events
  41. var x = 0;
  42. var y = 0;
  43. var vx = 30;
  44. var vy = 30;
  45. setInterval(() => {
  46. if (x < 0)
  47. vx = Math.abs(vx);
  48. else if (x > 1000)
  49. vx = -Math.abs(vx);
  50. if (y < 0)
  51. vy = Math.abs(vy);
  52. else if (y > 600)
  53. vy = -Math.abs(vy);
  54. x += vx;
  55. y += vy;
  56. eventer.emit("move", { x: x, y: y });
  57. }, 100);