Skip to content

Commit c873688

Browse files
committed
feat: add example about websocket listening to provider logs
refs #1024
1 parent 9cd0052 commit c873688

File tree

1 file changed

+40
-4
lines changed

1 file changed

+40
-4
lines changed

apps/api/examples/lease-flow.ts

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { config } from "@dotenvx/dotenvx";
2323
import axios from "axios";
2424
import * as fs from "node:fs";
2525
import * as path from "node:path";
26+
import WebSocket from "ws";
2627

2728
// Load environment variables from .env.local in the script directory
2829
const envPath = path.resolve(__dirname, ".env.local");
@@ -111,14 +112,16 @@ async function main() {
111112
throw new Error(`No bid found from provider ${targetProvider}`);
112113
}
113114

115+
const { provider, gseq, oseq } = selectedBid.bid.bid_id;
116+
114117
const body = {
115118
manifest,
116119
leases: [
117120
{
118121
dseq,
119-
gseq: selectedBid.bid.bid_id.gseq,
120-
oseq: selectedBid.bid.bid_id.oseq,
121-
provider: selectedBid.bid.bid_id.provider
122+
gseq,
123+
oseq,
124+
provider
122125
}
123126
]
124127
};
@@ -188,7 +191,40 @@ async function main() {
188191

189192
console.log("Deployment details:", JSON.stringify(deploymentResponse.data.data, null, 2));
190193

191-
// 7. Close deployment
194+
// 7. Stream logs from provider
195+
const providerResponse = await api.get(`/v1/providers/${provider}`, {
196+
headers: {
197+
"x-api-key": apiKey
198+
}
199+
});
200+
const { hostUri } = providerResponse.data;
201+
202+
const websocket = new WebSocket(`${API_URL}/v1/ws`, {
203+
headers: {
204+
"x-api-key": apiKey
205+
}
206+
});
207+
208+
websocket.on("message", message => {
209+
console.log("WebSocket message received:", message.toString());
210+
});
211+
212+
websocket.on("open", () => {
213+
console.log("WebSocket connected, sending message to stream logs");
214+
websocket.send(
215+
JSON.stringify({
216+
type: "websocket",
217+
providerAddress: provider,
218+
url: `${hostUri}/lease/${dseq}/${gseq}/${oseq}/logs`,
219+
chainNetwork: "sandbox"
220+
})
221+
);
222+
});
223+
224+
// wait for 5 seconds before closing the deployment
225+
await new Promise(resolve => setTimeout(resolve, 5000));
226+
227+
// 8. Close deployment
192228
console.log("Closing deployment...");
193229
const closeResponse = await api.delete(`/v1/deployments/${dseq}`, {
194230
headers: {

0 commit comments

Comments
 (0)