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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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.end(html);
  29. } else if (req.url == "/client.js") {
  30. fs.createReadStream("client.js")
  31. .pipe(res)
  32. .on("error", err => res.end(err.toString()));
  33. } else if (req.url.indexOf("/webevents") === 0) {
  34. eventer.handle(req, res);
  35. }
  36. }).listen(8080);
  37. // Just keep track of some coordinates to send to the client as events
  38. var x = 0;
  39. var y = 0;
  40. var vx = 30;
  41. var vy = 30;
  42. setInterval(() => {
  43. if (x < 0)
  44. vx = Math.abs(vx);
  45. else if (x > 1000)
  46. vx = -Math.abs(vx);
  47. if (y < 0)
  48. vy = Math.abs(vy);
  49. else if (y > 600)
  50. vy = -Math.abs(vy);
  51. x += vx;
  52. y += vy;
  53. eventer.emit("move", { x: x, y: y });
  54. }, 100);