Payload in subscription

Why does subscription query return all the nodes in the result everytime a new node has been created? This increases the payload a lot.

Is there an efficient way to fetch only the data that has changed? Like only the add, update or deleted node?

2 Likes

Hi @yodaheis,

Thanks for the question. Awesome to see you here in the community!

Currently, Dgraph only supports subscriptions that return the result of a query at regular intervals. Would you mind elaborating on what you are trying to build?

Tejas

Hi Tejas,

Like even for a simple chat application, everytime a new message has been added, the subscription query will return all the messages, instead of the new message(s) added.
What if I want to get messages sent after the last one I have received?
I can think of a couple of ways to workaround this, by structuring the query with parameters, but there are many limitations around it, especially since there is no cursor as a filter parameter

Same question, if the chat has thousands of messages would be nice to only get the deltas. Otherwise this will generate a ton of traffic as every new message will resend the entire data set correct?

Hey @timcash & @yodaheis ,

It seems the solution is just a query with filter.

Refer to answer by @pawan :

@abhijit-kar, filter in GraphQL is limited to indexes on scalar types only. and cannot use subscription on custom DQL