|
177 | 177 | (let [db* (atom (assoc db/initial-db :started-at (System/currentTimeMillis))) |
178 | 178 | metrics (->Metrics db*) |
179 | 179 | stdio-messenger (->ServerMessenger server db*) |
180 | | - ;; Read remote config from file-based sources (global/env/custom). |
181 | | - ;; Workspace-level config is not available yet (initialize hasn't been called). |
182 | | - remote-config (:remote (config/read-file-configs)) |
183 | | - sse-connections* (when (:enabled remote-config) |
184 | | - (atom #{})) |
185 | | - messenger (if sse-connections* |
186 | | - (remote.messenger/->BroadcastMessenger stdio-messenger sse-connections*) |
187 | | - stdio-messenger) |
| 180 | + ;; Always create SSE connections and BroadcastMessenger so the remote |
| 181 | + ;; HTTP server can be started later (e.g. when local project config |
| 182 | + ;; enables it after initialize). Broadcasting to an empty set is a no-op. |
| 183 | + sse-connections* (atom #{}) |
| 184 | + messenger (remote.messenger/->BroadcastMessenger stdio-messenger sse-connections*) |
| 185 | + start-remote-server! |
| 186 | + (fn [components] |
| 187 | + (when-let [rs (remote.server/start! components sse-connections*)] |
| 188 | + (reset! remote-server* rs) |
| 189 | + (swap! db* assoc |
| 190 | + :remote-connect-url (:connect-url rs) |
| 191 | + :remote-host (:host rs) |
| 192 | + :remote-token (:token rs) |
| 193 | + :remote-private-host? (:private-host? rs)))) |
188 | 194 | components {:db* db* |
189 | 195 | :messenger messenger |
190 | 196 | :metrics metrics |
191 | | - :server server}] |
| 197 | + :server server |
| 198 | + :start-remote-server! start-remote-server!}] |
192 | 199 | (logger/info "[server]" "Starting server...") |
193 | 200 | (metrics/start! metrics) |
194 | | - (when sse-connections* |
195 | | - (when-let [rs (remote.server/start! components sse-connections*)] |
196 | | - (reset! remote-server* rs) |
197 | | - (swap! db* assoc |
198 | | - :remote-connect-url (:connect-url rs) |
199 | | - :remote-host (:host rs) |
200 | | - :remote-token (:token rs) |
201 | | - :remote-private-host? (:private-host? rs)))) |
202 | 201 | (monitor-server-logs (:log-ch server)) |
203 | 202 | (setup-dev-environment db* components) |
204 | 203 | (jsonrpc.server/start server components))) |
|
0 commit comments