Yes exactly, you specify true in your IsSnapshotAvailable implementation.

Then you send the update telling the server that what you're sending is not the snapshot:

_listener.Update("hp" + index.ToString(), eventData, false);

thus the server creates a snapshot of null values for you and after that sends your update.

You might either returning false in the IsSnapshotAvailable implementation or set the snapshot flag to true when sending the first update: either case you'll get rid of the null upates.

HTH