sseParse.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. function createSSEParser(callback) {
  3. let buffer = "";
  4. let currentEvent = "message";
  5. function parse(chunk) {
  6. buffer += chunk;
  7. const messages = buffer.split("\n\n");
  8. buffer = messages.pop();
  9. messages.forEach((message) => {
  10. if (message.trim()) {
  11. currentEvent = "message";
  12. parseMessage(message);
  13. }
  14. });
  15. }
  16. function parseMessage(message) {
  17. const lines = message.split("\n");
  18. let event = "message";
  19. const dataLines = [];
  20. lines.forEach((line) => {
  21. if (line.startsWith("event:")) {
  22. event = line.slice(6).trim();
  23. currentEvent = event;
  24. } else if (line.startsWith("data:")) {
  25. dataLines.push(line.slice(5).trim());
  26. }
  27. });
  28. if (dataLines.length > 0) {
  29. dataLines.forEach((data) => {
  30. callback(currentEvent, data);
  31. });
  32. } else if (currentEvent !== "message") {
  33. callback(currentEvent, null);
  34. }
  35. }
  36. return {
  37. parse
  38. };
  39. }
  40. exports.createSSEParser = createSSEParser;
  41. //# sourceMappingURL=../../.sourcemap/mp-alipay/utils/sseParse.js.map