Guest User

Untitled

a guest
Dec 8th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. @cherrypy.expose
  2. def getUpdate(self):
  3. #Set the expected headers...
  4. cherrypy.response.headers["Content-Type"] = "text/event-stream;charset=utf-8"
  5. def content():
  6. yield "Hello,"
  7. yield "world"
  8. return content()
  9.  
  10. var sseEvent = new EventSource('http://localhost:8090/getUpdate');
  11. sseEvent.onmessage = function (event) {
  12. console.log(event);
  13. };
  14. sseEvent.onopen = function (event) {
  15. //console.log("I have started...");
  16. };
  17.  
  18. @cherrypy.expose
  19. def getUpdate(self, _=None):
  20. cherrypy.response.headers["Content-Type"] = "text/event-stream;charset=utf-8"
  21. if _:
  22. data = 'retry: 200ndata: ' + str( self.prog_output) + 'nn'
  23. return data
  24. else:
  25. def content():
  26. data = 'retry: 200ndata: ' + str( self.prog_output) + 'nn'
  27. return data
  28. return content()
  29.  
  30. getUpdate._cp_config = {'response.stream': True, 'tools.encode.encoding':'utf-8'}
  31.  
  32. <!DOCTYPE html>
  33. <html lang="en">
  34. <head>
  35. <meta charset="utf-8">
  36. <title>title</title>
  37. <link rel="stylesheet" href="style.css">
  38. </head>
  39. <body>
  40. <div>server-sent events</div>
  41. <h3>sse_handler.onmessage()</h3>
  42. <ul id="sse_message"></ul>
  43.  
  44. <script>
  45.  
  46. // crée l'objet qui permettra la connexion avec le serveur
  47. var sse_handler = new EventSource('http://localhost:8080/getUpdate');
  48.  
  49. sse_handler.onmessage = function (event) {
  50. console.log("-- sse_handler.onmessage()", event);
  51. /* https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Fields
  52. the onmessage handler catch all generic message, with no event field
  53. */
  54. var h_ul = document.getElementById('sse_message');
  55. var h_li = document.createElement("li");
  56.  
  57. h_li.innerHTML = event.data;
  58. h_ul.appendChild(h_li);
  59. };
  60.  
  61. sse_handler.onopen = function (event) {
  62. console.log("-- sse_handler.onopen()", event);
  63. };
  64.  
  65. </script>
  66. </body>
  67. </html>
  68.  
  69. #!/usr/bin/env python3
  70.  
  71. import datetime
  72.  
  73. import cherrypy
  74.  
  75. from pathlib import Path
  76.  
  77. class TestServerSentEvent(object):
  78. @cherrypy.expose
  79. def index(self):
  80. return Path("index.html").read_text()
  81.  
  82. @cherrypy.expose
  83. def getUpdate(self, * pos, ** nam):
  84. cherrypy.response.headers["Content-Type"] = "text/event-stream;charset=utf-8"
  85. return 'retry: 1200ndata: {0}nn'.format(self.output())
  86.  
  87. def output(self) :
  88. d = datetime.datetime.now()
  89. return f"TEST - {d}"
  90.  
  91. getUpdate._cp_config = {'response.stream': True, 'tools.encode.encoding':'utf-8'}
  92.  
  93. if __name__ == '__main__':
  94. cherrypy.quickstart(TestServerSentEvent())
Add Comment
Please, Sign In to add comment