This library provides an easy way to send events to a web browser (or any other client) over HTTP.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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);