Thanks Vladimir, I was able to get something together.
I did find an issue. If the Id property is set to a string (rather than an integer), the Scheduler creates a duplicate entry instead of moving the original entry. For example, if I have an appointment on Tuesday at 8AM and send an update from the hub with a new time of 10AM, the scheduler UI shows two appointments, one at 8 and one at 10. If I refresh the page, only the 10AM appointment is shown.
Setting the Id property to an int fixes this. Seems like a bug with how ids are being compared on the client side.