Program Streams Subscribe
Open an authenticated server stream for one decoded program topic.
Subscribe accepts one topic and one output format.
Request
message SubscribeRequest { string topic = 1; OutputFormat format = 2;}Response
message SubscribeResponse { string topic = 1; uint64 slot = 2; string payload = 5;}JavaScript
import grpc from "@grpc/grpc-js"import protoLoader from "@grpc/proto-loader" const definition = protoLoader.loadSync("program-streams.proto", { longs: String, enums: String, defaults: true,}) const root = grpc.loadPackageDefinition(definition)const Service = root.nln.stream.v1.StreamServiceconst client = new Service( "events.nln.clr3.org:443", grpc.credentials.createSsl(),) const metadata = new grpc.Metadata()metadata.set("x-api-key", process.env.NLN_API_KEY) const stream = client.Subscribe( { topic: "solana.pump_fun.trade_event", format: "JSON", }, metadata,) stream.on("data", (message) => { const payload = JSON.parse(message.payload) console.log(message.slot, payload)}) stream.on("error", (error) => { console.error(error.code, error.details)})Close the client stream to unsubscribe.
Consumer rules
- Store
slot. - Parse JSON outside the network callback when work is expensive.
- Bound your queue.
- Pause or restart before memory grows without limit.
- Deduplicate downstream writes.