First, I don't have a lot of network background, so sorry if this question shows my noobness. In my particular scenario, there is going to be one service per client (one-to-one). I'm sending game data from the server to client so that the client can do some processing with the data. In theory the data could change every frame, but in practice it does not. So I'm trying to only send over deltas, but ran into a problem with my approach.
My approach was to keep a dictionary<ID, data> on the server, so when it came to sending data over the wire, I could look up the last data I sent, and check what pieces of data changed, and then only send that data over. A set of bits would be flagged and also sent over so the client knew what data values were being updated. The client also keeps the data cached so it only needs the updated data.
The problem I ran into is that the server starts off before any clients connect, and starts sending the data (to nowhere). This builds the cache and so by the time a client connects, it is only receiving deltas (but the client never received the full object the first time around because it wasn't connected yet).
Since the client/service is one-to-one, I could probably modify the server to not start building a cache until a client connects. However, I wondered if missed packets would be a problem (maybe our socket API automatically resends so I don't need to worry about this situation). I'm wondering what kind of systems games use to sort of sync up efficiently client/server data so that only deltas can be sent.