feat: add SSE connect/disconnect public API

This commit is contained in:
2026-06-11 12:47:48 -04:00
parent 15baff4f26
commit 55cab2fc28
2 changed files with 51 additions and 0 deletions
+36
View File
@@ -100,5 +100,41 @@ Handles connection close and triggers reconnection."
(run-with-timer noise-sse--reconnect-delay nil
#'noise-sse-connect)))
;;;###autoload
(defun noise-sse-connect ()
"Connect to signal-cli SSE endpoint."
(interactive)
(noise-sse-disconnect)
(let* ((url (noise-sse--build-url))
(parsed (url-generic-parse-url url))
(host (url-host parsed))
(port (or (url-port parsed) 80))
(proc (make-network-process
:name "noise-sse"
:host host
:service port
:filter #'noise-sse--filter
:sentinel #'noise-sse--sentinel)))
(setq noise-sse--process proc)
(noise-sse--reset-reconnect-delay)
(process-send-string proc
(format "GET %s HTTP/1.1\r\nHost: %s\r\nAccept: text/event-stream\r\n\r\n"
(url-filename parsed)
host))
(message "Noise: SSE connected to %s" url)))
;;;###autoload
(defun noise-sse-disconnect ()
"Disconnect from signal-cli SSE endpoint."
(interactive)
(when noise-sse--process
(delete-process noise-sse--process)
(setq noise-sse--process nil))
(when noise-sse--reconnect-timer
(cancel-timer noise-sse--reconnect-timer)
(setq noise-sse--reconnect-timer nil))
(setq noise-sse--buffer "")
(message "Noise: SSE disconnected"))
(provide 'noise-sse)
;;; noise-sse.el ends here
+15
View File
@@ -95,5 +95,20 @@
(should (string-match-p "/api/v1/events" url))
(should-not (string-match-p "account=" url)))))
(ert-deftest noise-sse-connect-is-interactive ()
"noise-sse-connect is an interactive command."
(should (commandp 'noise-sse-connect)))
(ert-deftest noise-sse-disconnect-is-interactive ()
"noise-sse-disconnect is an interactive command."
(should (commandp 'noise-sse-disconnect)))
(ert-deftest noise-sse-disconnect-cleans-up ()
"noise-sse-disconnect cleans up process and timer."
(let ((noise-sse--reconnect-timer (run-with-timer 1000 nil #'ignore)))
(noise-sse-disconnect)
(should (null noise-sse--process))
(should (null noise-sse--reconnect-timer))))
(provide 'noise-sse-test)
;;; noise-sse-test.el ends here