Streamdata.io helps organizations discover the value of their data by leveraging event-driven infrastructure. With our Distribute product, we augment your existing APIs with an event-driven layer for use by your mission-critical clients and partners, and the web, mobile, and AI applications they depend on.
Efficiently delivers data across your entire business ecosystem using web standards
Generate new revenue from your existing API through our scalable, secure, and cost effective service.
Generate new revenue from your existing API through our scalable, secure, and cost effective service.
Take advantage of streaming to create more effective interfaces and increase user engagement.
Take advantage of streaming to create more effective interfaces and increase user engagement.
Feed your model with data from any API, and stream signals to your clients.
Feed your model with data from any API, and stream signals to your clients.
Every time a client needs data from an API, it has to be requested to the server. This request-response mechanism is called polling.
Data updates are dynamically pushed to the clients whenever available on the API, making the whole process more efficient.
Go beyond the basics of Streamdata.io and find out how it works in more detail.
Developersvar eventSource = streamdataio.createEventSource(targetUrl, appToken, headers);
var data = [];
eventSource.onData(function(snapshot) {
data = snapshot;
})
.onPatch(function(patch) {
jsonPatch.applyPatch(data, patch);
});
bool success = sse.LoadEvent(eventStr);
CkString evName;
evName.append(sse.eventName());
CkString evData;
evData.append(sse.data());
if (evData.isEmpty() != true) {
if (evName.equals("data")) {
jData = json::parse(evData.getString());
}
else if (evName.equals("patch")) {
json jPatch;
jPatch = json::parse(evData.getString());
jData = jData.patch(jPatch);
}
}
(void)eventSource:(TRVSEventSource *)eventSource didReceiveEvent:(TRVSServerSentEvent *)anEvent;
{
NSError *e;
if([anEvent.event isEqualToString:@"data"]==TRUE)
{
dataObject = [NSJSONSerialization JSONObjectWithData:anEvent.data options:NSJSONReadingMutableContainers error:&e];
}
else if ([anEvent.event isEqualToString:@"patch"]==TRUE)
{
NSArray *patch =[NSJSONSerialization JSONObjectWithData:anEvent.data options:NSJSONReadingMutableContainers error:&e];
[JSONPatch applyPatches:patch toCollection:dataObject];
}
}
EventSource eventSource = new EventSource(new URI(targetUrl), new URI(myApi), new SSEHandler(), headers);
private JsonNode data;
private class SSEHandler implements EventSourceHandler {
public void onMessage(String event, MessageEvent message) throws IOException {
if ("data".equals(event)) {
data = Json.mapper.readTree(message.data);
} else if ("patch".equals(event)) {
JsonNode patchNode = mapper.readTree(message.data);
JsonPatch patch = JsonPatch.fromJson(patchNode);
data = patch.apply(data);
}
}
}
var eventSource = streamdataio.createEventSource(targetUrl, appToken, headers);
var data = [];
eventSource.onData(function(snapshot) {
data = snapshot;
})
.onPatch(function(patch) {
jsonPatch.applyPatch(data, patch);
})
StreamdataClient.clientRxJavaClient(apiURL, appKey)
.toFlowable()
.subscribe(event -> {
if (event.isSnapshot()) {
logger.info("INITIAL SNAPSHOT {}", event.getSnapshot());
} else if (event.isPatch()) {
logger.info("PATCH {}, SNAPSHOT UPDATED {}", event.getPatch(), event.getSnapshot());
} else if (event.isError()) {
logger.warn("WARNING {}", event.getError());
}
}, err -> logger.error("Unexpected error occurred in creating the event source", err));
//Java (sans RxJava)
StreamdataClient.createClient(apiURL, appKey)
.onSnapshot(snaphot -> logger.info("INITIAL SNAPSHOT {}", data))
.onPatch(patch -> logger.info("PATCH {} SNAPSHOT UPDATED {}", patch, eventSource.getCurrentSnaphot()))
.onOpen(() -> logger.info("And we are... live!"))
.open();
with requests.get(URL, stream=True, headers=headers) as response:
client = sseclient.SSEClient(response)
for event in client.events():
if event.event == "data":
data = json.loads(event.data)
elif event.event == "patch":
patch = jsonpatch.JsonPatch.from_string(event.data)
patch.apply(data, in_place=True)
EventSource es = new EventSource(new Uri(targetUrl));
es.EventReceived += new EventHandler<ServerSentEventReceivedEventArgs>((o, e) =>
{
if (e.Message.EventType == "data") {
state = JsonConvert.DeserializeObject<MyObject>(e.Message.Data);
}
else if (e.Message.EventType == "patch") {
var operations = JsonConvert.DeserializeObject<List<Operation<MyObject>>>(e.Message.Data);
var patchDocumentOperations = new JsonPatchDocument<MyObject>(operations);
patchDocumentOperations.ApplyTo(state);
}
}
Discover all the advantages of adopting streaming.
By performing differential computing Streamdata.io saves up to 90% of API bandwidth consumption while improving speed and enhancing efficiency — so you can focus on what matters.
Build mesmerizing interfaces with real-time animated data to captivate and engage your users repeatedly.
With up to 90% in savings compared to internal builds, Streamdata.io is the most cost-efficient way to stream data.
Provide a premium streaming version of your existing API for your most demanding customers to grow your revenue.
Allocated resources scale automatically as demand grows, allowing you to service millions of data-hungry users.
There is no server side coding required to adapt to data sources. Our proxy can stream any existing REST API.
Streamdata.io relies on the latest standards in web security to make sure data stays safe.
We believe in speed. That's why we made it a matter of minutes to get a streaming API. Yes, it's really this fast.
Turn any existing REST API into an event-driven streaming API in mere minutes.
Partner
Streamdata.io helped Xignite build the first streaming market data API to enhance customer experience
Partner
Streamdata.io was granted Google Technological Partner status for its expertise in Cloud solutions.
Partner
Streamdata.io is available on Pivotal Market Place so developers can unleash the power of streaming without leaving their environment.
Client
ChartIQ and Streamdata.io have partnered to bring HTML data charting one step further with real-time charting feature.
"Streamdata.io has successfully removed a significant amount of load from our core platform to enable us to concentrate on delivering a great attendee experience." Richard Lee, CEO, Streamgo
Kong and Streamdata.io partner to deliver best-in-class API management solution to developers.
Once signed up, you can easily connect an API and immediately begin sending or receiving data updates in realtime. Code samples will help you get started or explore new possibilities.
Get StartedTo learn more about how Streamdata.io works — from resources and security to compression and configuration — visit our Docs page where our in-house developers explain everything you need to know about optimizing your data streaming.
Learn More