Syncplay Protocol (v1.2.7)
The explanation of what Syncplay is/does is a good primer on the general approach that underpin the Syncplay Protocol. The Protocol itself is defined by its implementation in Syncplay, especially protocols.py. The Syncplay Protocol is based on JSON over TCP/IP, and has been designed to be backwards and forwards compatible so that older clients can connect to newer servers and vice versa. Timeout due to lack of ping is typically set to 4 seconds so it is important that the client sends ‘ping’ heartbeat messages even when the file remains paused and nothing is happening.
Hello messages
Identification
Client >> {"Hello": {"username": "Bob", "password": "md5hashofthepassword", "room": {"name": "SyncRoom"}, "version": "1.2.7"}}
[Note: Password may be omitted if there is no password.]
Success response
Server << {"Hello": {"username": "Bob", "version": "1.2.7", "motd": "Hello! This is today's message of the day ^_^", "room": {"name": "SyncRoom"}}}
[Note: This may come after the relevant ‘state’ message is sent due to the user joining a room. A user may be renamed if their chosen name is already in use.]
Relevant error responses
Server << {"Error": {"message": "Password required"}} Server << {"Error": {"message": "Wrong password supplied"}} Server << {"Error": {"message": "Mismatch between versions of client and server"}}
Set Messages
User join room
Client >> {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "event": {"joined": true}}}}}
[Server then sends appropriate list/state notifications informing the relevant clients of the new circumstances]
User leave room
Server (to all who can see room) << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "event": {"left": true}}}}}
User updates file information (filename/filesize sent raw)
Client >> {"Set": {"file": {"duration": 596.458, "name": "BigBuckBunny.avi", "size": 220514438}}} Server (to all who can see room) << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "BigBuckBunny.avi", "size": "220514438"}}}}}
User updates file information (filename/filesize sent hashed)
Client >> {"Set": {"file": {"duration": 596.0, "name": "6fa13ad43fea", "size": "44657bd3c1bd"}}} Server (to all who can see room) << {"Set": {"user": {"Bob": {"room": {"name": "6fa13ad43fea"}, "file": {"duration": 596.458, "name": "6fa13ad43fea", "size": "44657bd3c1bd"}}}}}
User updates file information (filename/filesize not sent)
Client >> {"Set": {"file": {"duration": 596.458, "name": "**Hidden filename**", "size": 0}}} Server (to all who can see room) << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "**Hidden filename**", "size": 0}}}}}
[Duration is in decimal seconds; Size is in bytes]
List Messages
Request list of who is playing what in which room
Client >> {"List": null} Server << {"List": {"SyncRoom": {"Bob": {"position": 0, "file": {"duration": 596.458, "name": "BigBuckBunny.avi", "size": 220514438}}}}}
[Note: “position” is not mandatory for list messages – it is stated in Syncplay 1.2.7 and below, but not 1.2.8 and above]
State Messages
How latency calculations works (1.2.7 edition)
Look at the code to see how it works. ‘[client]LatencyCalculation’ is a timestamp based on the time in seconds since the epoch as a floating point number. ‘clientRtt’ is round-trip time (i.e. ping time). In older versions Syncplay used ‘yourLatency’ and ‘senderLatency’ but not ‘serverRtt’.
How DVD titles works (1.2.8+)
In Syncplay 1.2.8 the VLC implementation uses weeks to represent 0-based DVD title tracks (see commit). For example, if a user is 10 minutes into title track 1 then the position is transmitted as 1 week and 10 minutes.
Playstate / ignoringOnTheFly
[Note: Client must be logged in with a successful Hello message before it can send State/ignoringOnTheFly messages. ignoringOnTheFly means the client/server is not just going with the status quo because there is a forced state change. It basically means “I will ignore state messages from you until you acknowledge that you got this state change message from me”]
State when user joins an empty room
Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Nobody", "doSeek": false}, "ping": {"yourLatency": 0, "senderLatency": 0, "latencyCalculation": 1394465759.914378}}}
Client setting file to play
Client >> {"State": {"ignoringOnTheFly": {"client": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394587857.902}, "playstate": {"paused": false, "position": 0.089}}}
Server (to all in room) << {"State": {"ignoringOnTheFly": {"client": 1, "server": 1}, "playstate": {"paused": false, "position": 0.08919311904907226, "setBy": "Bob", "doSeek": null}, "ping": {"yourLatency": 0.01143956184387207, "senderLatency": 0.01143956184387207, "latencyCalculation": 1394588073.328919}}}
Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394587857.931, "latencyCalculation": 1394588073.328919}, "playstate": {"paused": false, "position": 0.09200002098083496}}}
General client ping (no file open / paused at beginning)
Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394590473.585, "latencyCalculation": 1394590688.962084}, "playstate": {"paused": true, "position": 0.0}}}
General client ping (file playing)
Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394590473.585, "latencyCalculation": 1394590688.962084}, "playstate": {"paused": false, "position": 2.236}}}
File currently playing
Server << {"State": {"playstate": {"paused": false, "position": 0.9981620445251465, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.015998005867004395, "senderLatency": 0.015998005867004395, "latencyCalculation": 1394588074.267119}}}
File currently paused
Server << {"State": {"playstate": {"paused": true, "position": 1.211, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.013992071151733398, "senderLatency": 0.013992071151733398, "latencyCalculation": 1394588081.267103}}}
Seek (file paused)
Client >> {"State": {"ignoringOnTheFly": {"client": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394587862.002}, "playstate": {"paused": false, "position": 7.47, "doSeek": true}}} Server (to all in room) << {"State": {"ignoringOnTheFly": {"client": 1, "server": 1}, "playstate": {"paused": false, "position": 7.470195026397705, "setBy": "Bob", "doSeek": true}, "ping": {"yourLatency": 0.01176905632019043, "senderLatency": 0.01176905632019043, "latencyCalculation": 1394588077.429114}}}
Relevant error messages
Server << {"Error": {"message": "You must be known to server before sending this command"}}
Error Messages
Server << {"Error": {"message": "Unknown command {}"}} Server << {"Error": {"message": "Not a json encoded string {}"}} Server << {"Error": {"message": "You must be known to server before sending this command"}} Server << {"Error": {"message": "Client drop: {} -- "}} Server << {"Error": {"message": "Password required"}} Server << {"Error": {"message": "Wrong password supplied"}} Server << {"Error": {"message": "Not enough Hello arguments"}} Server << {"Error": {"message": "Mismatch between versions of client and server"}}
Test case #1
From Bob’s point of view (all with 1.2.7 on a public server):
1. Bob joins room SyncRoom with no file open:
[20:03:40] Client >> {"Hello": {"username": "Bob", "version": "1.2.7", "room": {"name": "SyncRoom"}}} [20:03:41] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "event": {"joined": true}}}}} [20:03:41] Server << {"Hello": {"username": "Bob", "version": "1.2.7", "motd": "", "room": {"name": "SyncRoom"}}} [20:03:41] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Nobody", "doSeek": false}, "ping": {"yourLatency": 0, "senderLatency": 0, "latencyCalculation": 1394654836.994389}}} [20:03:41] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654621.233, "latencyCalculation": 1394654836.994389}, "playstate": {"paused": true, "position": 0.0}}}
2. Bob opens file big_buck_bunny_480p_surround-fix.avi, which is 210 MB in size and 9 minutes and 56 seconds long:
[20:03:41] Client >> {"Set": {"file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}} [20:03:41] Client >> {"List": null} [20:03:41] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:03:41] Server << {"List": {"SyncRoom": {"Bob": {"position": 0, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:03:42] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Nobody", "doSeek": false}, "ping": {"yourLatency": 0.07098352909088135, "senderLatency": 0, "latencyCalculation": 1394654837.994509}}} [20:03:42] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654622.111, "latencyCalculation": 1394654837.994509}, "playstate": {"paused": true, "position": 0.0}}} [20:03:43] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.009596467018127441, "senderLatency": 0.009596467018127441, "latencyCalculation": 1394654838.994494}}} [20:03:43] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654623.111, "latencyCalculation": 1394654838.994494}, "playstate": {"paused": true, "position": 0.0}}} [20:03:44] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.00975656509399414, "senderLatency": 0.00975656509399414, "latencyCalculation": 1394654839.994484}}} [20:03:44] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654624.111, "latencyCalculation": 1394654839.994484}, "playstate": {"paused": true, "position": 0.0}}} [20:03:45] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010800480842590332, "senderLatency": 0.010800480842590332, "latencyCalculation": 1394654840.994504}}} [20:03:45] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654625.112, "latencyCalculation": 1394654840.994504}, "playstate": {"paused": true, "position": 0.0}}} [20:03:46] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010854482650756836, "senderLatency": 0.010854482650756836, "latencyCalculation": 1394654841.994502}}} [20:03:46] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654626.113, "latencyCalculation": 1394654841.994502}, "playstate": {"paused": true, "position": 0.0}}} [20:03:47] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010947465896606445, "senderLatency": 0.010947465896606445, "latencyCalculation": 1394654842.994507}}} [20:03:47] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654627.111, "latencyCalculation": 1394654842.994507}, "playstate": {"paused": true, "position": 0.0}}} [20:03:48] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010092020034790039, "senderLatency": 0.010092020034790039, "latencyCalculation": 1394654843.994505}}} [20:03:48] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654628.11, "latencyCalculation": 1394654843.994505}, "playstate": {"paused": true, "position": 0.0}}}
3. The file information is sent again due to a Syncplay quirk (this is not necessary):
[20:03:48] Client >> {"Set": {"file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}} [20:03:48] Client >> {"List": null} [20:03:48] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:03:48] Server << {"List": {"SyncRoom": {"Bob": {"position": 0, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:03:49] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010163545608520508, "senderLatency": 0.010163545608520508, "latencyCalculation": 1394654844.994493}}} [20:03:49] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654629.111, "latencyCalculation": 1394654844.994493}, "playstate": {"paused": true, "position": 0.0}}} [20:03:50] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011931538581848145, "senderLatency": 0.011931538581848145, "latencyCalculation": 1394654845.994497}}} [20:03:50] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654630.11, "latencyCalculation": 1394654845.994497}, "playstate": {"paused": true, "position": 0.0}}} [20:03:51] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010627508163452148, "senderLatency": 0.010627508163452148, "latencyCalculation": 1394654846.994495}}} [20:03:51] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654631.11, "latencyCalculation": 1394654846.994495}, "playstate": {"paused": true, "position": 0.0}}} [20:03:52] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010391592979431152, "senderLatency": 0.010391592979431152, "latencyCalculation": 1394654847.994524}}} [20:03:52] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654632.11, "latencyCalculation": 1394654847.994524}, "playstate": {"paused": true, "position": 0.0}}} [20:03:53] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.009536504745483398, "senderLatency": 0.009536504745483398, "latencyCalculation": 1394654848.994525}}} [20:03:53] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654633.11, "latencyCalculation": 1394654848.994525}, "playstate": {"paused": true, "position": 0.0}}}
4. Bob seeks to 1 minute:
[20:03:53] Client >> {"State": {"ignoringOnTheFly": {"client": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654633.862}, "playstate": {"paused": true, "position": 60.0, "doSeek": true}}} [20:03:53] Server << {"State": {"ignoringOnTheFly": {"client": 1, "server": 1}, "playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": true}, "ping": {"yourLatency": 0.011165022850036621, "senderLatency": 0.011165022850036621, "latencyCalculation": 1394654849.768078}}} [20:03:53] Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654633.887, "latencyCalculation": 1394654849.768078}, "playstate": {"paused": true, "position": 60.0}}} [20:03:54] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.012828469276428223, "senderLatency": 0.012828469276428223, "latencyCalculation": 1394654849.994511}}} [20:03:54] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654634.11, "latencyCalculation": 1394654849.994511}, "playstate": {"paused": true, "position": 60.0}}} [20:03:55] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.013691067695617676, "senderLatency": 0.013691067695617676, "latencyCalculation": 1394654850.994506}}} [20:03:55] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654635.111, "latencyCalculation": 1394654850.994506}, "playstate": {"paused": true, "position": 60.0}}} [20:03:56] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010749101638793945, "senderLatency": 0.010749101638793945, "latencyCalculation": 1394654851.994532}}} [20:03:56] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654636.114, "latencyCalculation": 1394654851.994532}, "playstate": {"paused": true, "position": 60.0}}} [20:03:57] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011864423751831055, "senderLatency": 0.011864423751831055, "latencyCalculation": 1394654852.994497}}} [20:03:57] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654637.11, "latencyCalculation": 1394654852.994497}, "playstate": {"paused": true, "position": 60.0}}} [20:03:58] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.014233946800231934, "senderLatency": 0.014233946800231934, "latencyCalculation": 1394654853.994505}}} [20:03:58] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654638.113, "latencyCalculation": 1394654853.994505}, "playstate": {"paused": true, "position": 60.0}}} [20:03:59] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011715531349182129, "senderLatency": 0.011715531349182129, "latencyCalculation": 1394654854.994513}}} [20:03:59] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654639.111, "latencyCalculation": 1394654854.994513}, "playstate": {"paused": true, "position": 60.0}}} [20:04:00] Server << {"State": {"playstate": {"paused": true, "position": 60.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010990023612976074, "senderLatency": 0.010990023612976074, "latencyCalculation": 1394654855.9945}}} [20:04:00] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654640.115, "latencyCalculation": 1394654855.9945}, "playstate": {"paused": true, "position": 60.0}}}
5. Bob presses play:
[20:04:00] Client >> {"State": {"ignoringOnTheFly": {"client": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654640.654}, "playstate": {"paused": false, "position": 60.083}}} [20:04:00] Server << {"State": {"ignoringOnTheFly": {"client": 1, "server": 1}, "playstate": {"paused": false, "position": 60.08324104118347, "setBy": "Bob", "doSeek": null}, "ping": {"yourLatency": 0.012366533279418945, "senderLatency": 0.012366533279418945, "latencyCalculation": 1394654856.560005}}} [20:04:00] Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654640.684, "latencyCalculation": 1394654856.560005}, "playstate": {"paused": false, "position": 60.08600002098083}}} [20:04:01] Server << {"State": {"playstate": {"paused": false, "position": 60.48825698661804, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.016108989715576172, "senderLatency": 0.016108989715576172, "latencyCalculation": 1394654856.994516}}} [20:04:01] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654641.11, "latencyCalculation": 1394654856.994516}, "playstate": {"paused": false, "position": 60.503999849319456}}} [20:04:02] Server << {"State": {"playstate": {"paused": false, "position": 61.48345865821838, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010261058807373047, "senderLatency": 0.010261058807373047, "latencyCalculation": 1394654857.994536}}} [20:04:02] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654642.112, "latencyCalculation": 1394654857.994536}, "playstate": {"paused": false, "position": 61.50599994277954}}} [20:04:03] Server << {"State": {"playstate": {"paused": false, "position": 62.48344292259216, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011252045631408691, "senderLatency": 0.011252045631408691, "latencyCalculation": 1394654858.994519}}} [20:04:03] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654643.11, "latencyCalculation": 1394654858.994519}, "playstate": {"paused": false, "position": 62.503999849319456}}} [20:04:04] Server << {"State": {"playstate": {"paused": false, "position": 63.48323287582397, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010360956192016602, "senderLatency": 0.010360956192016602, "latencyCalculation": 1394654859.99451}}} [20:04:04] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654644.11, "latencyCalculation": 1394654859.99451}, "playstate": {"paused": false, "position": 63.503999849319456}}} [20:04:05] Server << {"State": {"playstate": {"paused": false, "position": 64.48308481788635, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010439515113830566, "senderLatency": 0.010439515113830566, "latencyCalculation": 1394654860.994512}}} [20:04:05] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654645.11, "latencyCalculation": 1394654860.994512}, "playstate": {"paused": false, "position": 64.50399984931946}}} [20:04:06] Server << {"State": {"playstate": {"paused": false, "position": 65.48222984886169, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010871410369873047, "senderLatency": 0.010871410369873047, "latencyCalculation": 1394654861.994528}}} [20:04:06] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654646.11, "latencyCalculation": 1394654861.994528}, "playstate": {"paused": false, "position": 65.5029999217987}}} [20:04:07] Server << {"State": {"playstate": {"paused": false, "position": 66.48049273109436, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.01123344898223877, "senderLatency": 0.01123344898223877, "latencyCalculation": 1394654862.994528}}} [20:04:07] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654647.111, "latencyCalculation": 1394654862.994528}, "playstate": {"paused": false, "position": 66.50400008773804}}} [20:04:08] Server << {"State": {"playstate": {"paused": false, "position": 67.48116292572021, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011387467384338379, "senderLatency": 0.011387467384338379, "latencyCalculation": 1394654863.994505}}} [20:04:08] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654648.11, "latencyCalculation": 1394654863.994505}, "playstate": {"paused": false, "position": 67.50399984931946}}} [20:04:09] Server << {"State": {"playstate": {"paused": false, "position": 68.48235382652283, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010794997215270996, "senderLatency": 0.010794997215270996, "latencyCalculation": 1394654864.994489}}} [20:04:09] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654649.11, "latencyCalculation": 1394654864.994489}, "playstate": {"paused": false, "position": 68.50399984931946}}} [20:04:10] Server << {"State": {"playstate": {"paused": false, "position": 69.4818259677887, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011068463325500488, "senderLatency": 0.011068463325500488, "latencyCalculation": 1394654865.994492}}} [20:04:10] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654650.11, "latencyCalculation": 1394654865.994492}, "playstate": {"paused": false, "position": 69.50499984931946}}} [20:04:11] Server << {"State": {"playstate": {"paused": false, "position": 70.48422262382508, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010386466979980469, "senderLatency": 0.010386466979980469, "latencyCalculation": 1394654866.994527}}} [20:04:11] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654651.11, "latencyCalculation": 1394654866.994527}, "playstate": {"paused": false, "position": 70.50399984931946}}} [20:04:12] Server << {"State": {"playstate": {"paused": false, "position": 71.48258676147461, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010688424110412598, "senderLatency": 0.010688424110412598, "latencyCalculation": 1394654867.994531}}} [20:04:12] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654652.111, "latencyCalculation": 1394654867.994531}, "playstate": {"paused": false, "position": 71.50500001525879}}}
6. Bob seeks to 5 minutes:
[20:04:12] Client >> {"State": {"ignoringOnTheFly": {"client": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654652.552}, "playstate": {"paused": false, "position": 300.025, "doSeek": true}}} [20:04:12] Server << {"State": {"ignoringOnTheFly": {"client": 1, "server": 1}, "playstate": {"paused": false, "position": 300.02515091896055, "setBy": "Bob", "doSeek": true}, "ping": {"yourLatency": 0.011038541793823242, "senderLatency": 0.011038541793823242, "latencyCalculation": 1394654868.456908}}} [20:04:12] Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654652.574, "latencyCalculation": 1394654868.456908}, "playstate": {"paused": false, "position": 300.046999835968}}} [20:04:13] Server << {"State": {"playstate": {"paused": false, "position": 300.56051483154295, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.012035489082336426, "senderLatency": 0.012035489082336426, "latencyCalculation": 1394654868.994537}}} [20:04:13] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654653.11, "latencyCalculation": 1394654868.994537}, "playstate": {"paused": false, "position": 300.5129999217987}}} [20:04:14] Server << {"State": {"playstate": {"paused": false, "position": 301.49256578063967, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010185956954956055, "senderLatency": 0.010185956954956055, "latencyCalculation": 1394654869.994516}}} [20:04:14] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654654.11, "latencyCalculation": 1394654869.994516}, "playstate": {"paused": false, "position": 301.5139998493195}}} [20:04:15] Server << {"State": {"playstate": {"paused": false, "position": 302.491279750824, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011345505714416504, "senderLatency": 0.011345505714416504, "latencyCalculation": 1394654870.994525}}} [20:04:15] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654655.11, "latencyCalculation": 1394654870.994525}, "playstate": {"paused": false, "position": 302.5139998493195}}} [20:04:16] Server << {"State": {"playstate": {"paused": false, "position": 303.4921738204956, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.0108870267868042, "senderLatency": 0.0108870267868042, "latencyCalculation": 1394654871.994517}}} [20:04:16] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654656.11, "latencyCalculation": 1394654871.994517}, "playstate": {"paused": false, "position": 303.5139999217987}}} [20:04:17] Server << {"State": {"playstate": {"paused": false, "position": 304.4930107421875, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010482430458068848, "senderLatency": 0.010482430458068848, "latencyCalculation": 1394654872.99453}}} [20:04:17] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654657.11, "latencyCalculation": 1394654872.99453}, "playstate": {"paused": false, "position": 304.5139998493195}}} [20:04:18] Server << {"State": {"playstate": {"paused": false, "position": 305.49296298599245, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010480523109436035, "senderLatency": 0.010480523109436035, "latencyCalculation": 1394654873.99449}}} [20:04:18] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654658.109, "latencyCalculation": 1394654873.99449}, "playstate": {"paused": false, "position": 305.5129999217987}}} [20:04:19] Server << {"State": {"playstate": {"paused": false, "position": 306.49181404685976, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010585546493530273, "senderLatency": 0.010585546493530273, "latencyCalculation": 1394654874.994513}}} [20:04:19] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654659.111, "latencyCalculation": 1394654874.994513}, "playstate": {"paused": false, "position": 306.5150000152588}}} [20:04:20] Server << {"State": {"playstate": {"paused": false, "position": 307.49343410110475, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010755538940429688, "senderLatency": 0.010755538940429688, "latencyCalculation": 1394654875.9945}}} [20:04:20] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654660.114, "latencyCalculation": 1394654875.9945}, "playstate": {"paused": false, "position": 307.51800003623964}}} [20:04:21] Server << {"State": {"playstate": {"paused": false, "position": 308.49238005256655, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.01280355453491211, "senderLatency": 0.01280355453491211, "latencyCalculation": 1394654876.994524}}} [20:04:21] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654661.11, "latencyCalculation": 1394654876.994524}, "playstate": {"paused": false, "position": 308.5139998493195}}}
7. Alice joins room SyncRoom with no file open:
[20:04:21] Server << {"Set": {"user": {"Alice": {"room": {"name": "SyncRoom"}, "event": {"joined": true}}}}} [20:04:22] Server << {"State": {"playstate": {"paused": false, "position": 309.4923557338715, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010807037353515625, "senderLatency": 0.010807037353515625, "latencyCalculation": 1394654877.994533}}} [20:04:22] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654662.196, "latencyCalculation": 1394654877.994533}, "playstate": {"paused": false, "position": 309.6000001487732}}} [20:04:22] Server << {"Set": {"user": {"Alice": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:04:23] Server << {"State": {"playstate": {"paused": false, "position": 310.38458982086183, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.0538409948348999, "senderLatency": 0.0538409948348999, "latencyCalculation": 1394654878.994525}}} [20:04:23] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654663.11, "latencyCalculation": 1394654878.994525}, "playstate": {"paused": false, "position": 310.5139998493195}}} [20:04:24] Server << {"State": {"playstate": {"paused": false, "position": 311.4919587669373, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011005520820617676, "senderLatency": 0.011005520820617676, "latencyCalculation": 1394654879.994531}}} [20:04:24] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654664.11, "latencyCalculation": 1394654879.994531}, "playstate": {"paused": false, "position": 311.5139998493195}}} [20:04:25] Server << {"State": {"playstate": {"paused": false, "position": 312.4925240573883, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.01069653034210205, "senderLatency": 0.01069653034210205, "latencyCalculation": 1394654880.994486}}} [20:04:25] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654665.109, "latencyCalculation": 1394654880.994486}, "playstate": {"paused": false, "position": 312.5129999217987}}} [20:04:26] Server << {"State": {"playstate": {"paused": false, "position": 313.4925369319916, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010232925415039062, "senderLatency": 0.010232925415039062, "latencyCalculation": 1394654881.994529}}} [20:04:26] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654666.109, "latencyCalculation": 1394654881.994529}, "playstate": {"paused": false, "position": 313.5129999217987}}} [20:04:27] Server << {"State": {"playstate": {"paused": false, "position": 314.49230590438845, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010328054428100586, "senderLatency": 0.010328054428100586, "latencyCalculation": 1394654882.99453}}} [20:04:27] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654667.111, "latencyCalculation": 1394654882.99453}, "playstate": {"paused": false, "position": 314.5160000152588}}} [20:04:28] Server << {"State": {"playstate": {"paused": false, "position": 315.49274895858764, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011604070663452148, "senderLatency": 0.011604070663452148, "latencyCalculation": 1394654883.994529}}} [20:04:28] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654668.109, "latencyCalculation": 1394654883.994529}, "playstate": {"paused": false, "position": 315.5139999217987}}} [20:04:29] Server << {"State": {"playstate": {"paused": false, "position": 316.49315474700927, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010391473770141602, "senderLatency": 0.010391473770141602, "latencyCalculation": 1394654884.994504}}} [20:04:29] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654669.109, "latencyCalculation": 1394654884.994504}, "playstate": {"paused": false, "position": 316.5139999217987}}} [20:04:30] Server << {"State": {"playstate": {"paused": false, "position": 317.49301789474487, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.01046597957611084, "senderLatency": 0.01046597957611084, "latencyCalculation": 1394654885.99449}}} [20:04:30] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654670.113, "latencyCalculation": 1394654885.99449}, "playstate": {"paused": false, "position": 317.5169998703003}}} [20:04:31] Server << {"State": {"playstate": {"paused": false, "position": 318.4923757610321, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.0123060941696167, "senderLatency": 0.0123060941696167, "latencyCalculation": 1394654886.994519}}} [20:04:31] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654671.112, "latencyCalculation": 1394654886.994519}, "playstate": {"paused": false, "position": 318.51599994277956}}} [20:04:32] Server << {"State": {"playstate": {"paused": false, "position": 319.4925228652954, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011716961860656738, "senderLatency": 0.011716961860656738, "latencyCalculation": 1394654887.994521}}} [20:04:32] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654672.109, "latencyCalculation": 1394654887.994521}, "playstate": {"paused": false, "position": 319.5129999217987}}} [20:04:33] Server << {"State": {"playstate": {"paused": false, "position": 320.4913949069977, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010789036750793457, "senderLatency": 0.010789036750793457, "latencyCalculation": 1394654888.994533}}} [20:04:33] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654673.109, "latencyCalculation": 1394654888.994533}, "playstate": {"paused": false, "position": 320.5129999217987}}} [20:04:34] Server << {"State": {"playstate": {"paused": false, "position": 321.49141374206545, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010771512985229492, "senderLatency": 0.010771512985229492, "latencyCalculation": 1394654889.994525}}} [20:04:34] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654674.111, "latencyCalculation": 1394654889.994525}, "playstate": {"paused": false, "position": 321.5150000152588}}} [20:04:35] Server << {"State": {"playstate": {"paused": false, "position": 322.49318996047975, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010871529579162598, "senderLatency": 0.010871529579162598, "latencyCalculation": 1394654890.994496}}} [20:04:35] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654675.109, "latencyCalculation": 1394654890.994496}, "playstate": {"paused": false, "position": 322.5129999217987}}}
8. Alice pauses:
[20:04:35] Server << {"State": {"ignoringOnTheFly": {"server": 1}, "playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": null}, "ping": {"yourLatency": 0.010627388954162598, "senderLatency": 0.010729551315307617, "latencyCalculation": 1394654891.819399}}} [20:04:35] Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654675.978, "latencyCalculation": 1394654891.819399}, "playstate": {"paused": true, "position": 323.002}}} [20:04:36] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.03364396095275879, "senderLatency": 0.011754512786865234, "latencyCalculation": 1394654891.994496}}} [20:04:36] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654676.109, "latencyCalculation": 1394654891.994496}, "playstate": {"paused": true, "position": 323.002}}} [20:04:37] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010074973106384277, "senderLatency": 0.0118865966796875, "latencyCalculation": 1394654892.99448}}} [20:04:37] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654677.108, "latencyCalculation": 1394654892.99448}, "playstate": {"paused": true, "position": 323.002}}} [20:04:38] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010172009468078613, "senderLatency": 0.012004494667053223, "latencyCalculation": 1394654893.994517}}} [20:04:38] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654678.109, "latencyCalculation": 1394654893.994517}, "playstate": {"paused": true, "position": 323.002}}} [20:04:39] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010265469551086426, "senderLatency": 0.011836528778076172, "latencyCalculation": 1394654894.994508}}} [20:04:39] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654679.11, "latencyCalculation": 1394654894.994508}, "playstate": {"paused": true, "position": 323.002}}} [20:04:40] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010376930236816406, "senderLatency": 0.011159062385559082, "latencyCalculation": 1394654895.994517}}} [20:04:40] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654680.109, "latencyCalculation": 1394654895.994517}, "playstate": {"paused": true, "position": 323.002}}} [20:04:41] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010355949401855469, "senderLatency": 0.01249551773071289, "latencyCalculation": 1394654896.994525}}} [20:04:41] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654681.108, "latencyCalculation": 1394654896.994525}, "playstate": {"paused": true, "position": 323.002}}} [20:04:42] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.01140904426574707, "senderLatency": 0.011420011520385742, "latencyCalculation": 1394654897.994516}}} [20:04:42] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654682.108, "latencyCalculation": 1394654897.994516}, "playstate": {"paused": true, "position": 323.002}}} [20:04:43] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.009496092796325684, "senderLatency": 0.011165022850036621, "latencyCalculation": 1394654898.994503}}} [20:04:43] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654683.108, "latencyCalculation": 1394654898.994503}, "playstate": {"paused": true, "position": 323.002}}} [20:04:44] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.009629964828491211, "senderLatency": 0.010517001152038574, "latencyCalculation": 1394654899.994511}}} [20:04:44] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654684.109, "latencyCalculation": 1394654899.994511}, "playstate": {"paused": true, "position": 323.002}}} [20:04:45] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010830998420715332, "senderLatency": 0.011817455291748047, "latencyCalculation": 1394654900.994506}}} [20:04:45] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654685.108, "latencyCalculation": 1394654900.994506}, "playstate": {"paused": true, "position": 323.002}}}
8. Alice moves to room TheOtherRoom:
[20:04:45] Server << {"Set": {"user": {"Alice": {"room": {"name": "SyncRoom"}, "event": {"left": true}}}}} [20:04:46] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.009757041931152344, "senderLatency": 0.02600991725921631, "latencyCalculation": 1394654901.994545}}} [20:04:46] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654686.108, "latencyCalculation": 1394654901.994545}, "playstate": {"paused": true, "position": 323.002}}} [20:04:47] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010839462280273438, "senderLatency": 0.010839462280273438, "latencyCalculation": 1394654902.994536}}} [20:04:47] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654687.109, "latencyCalculation": 1394654902.994536}, "playstate": {"paused": true, "position": 323.002}}} [20:04:48] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.009894013404846191, "senderLatency": 0.009894013404846191, "latencyCalculation": 1394654903.994543}}} [20:04:48] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654688.109, "latencyCalculation": 1394654903.994543}, "playstate": {"paused": true, "position": 323.002}}} [20:04:49] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010959982872009277, "senderLatency": 0.010959982872009277, "latencyCalculation": 1394654904.994554}}} [20:04:49] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654689.109, "latencyCalculation": 1394654904.994554}, "playstate": {"paused": true, "position": 323.002}}} [20:04:50] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.012325525283813477, "senderLatency": 0.012325525283813477, "latencyCalculation": 1394654905.994528}}} [20:04:50] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654690.108, "latencyCalculation": 1394654905.994528}, "playstate": {"paused": true, "position": 323.002}}} [20:04:51] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010563015937805176, "senderLatency": 0.010563015937805176, "latencyCalculation": 1394654906.994556}}} [20:04:51] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654691.108, "latencyCalculation": 1394654906.994556}, "playstate": {"paused": true, "position": 323.002}}} [20:04:52] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.011262059211730957, "senderLatency": 0.011262059211730957, "latencyCalculation": 1394654907.994528}}} [20:04:52] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654692.109, "latencyCalculation": 1394654907.994528}, "playstate": {"paused": true, "position": 323.002}}} [20:04:53] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010350465774536133, "senderLatency": 0.010350465774536133, "latencyCalculation": 1394654908.994558}}} [20:04:53] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654693.108, "latencyCalculation": 1394654908.994558}, "playstate": {"paused": true, "position": 323.002}}} [20:04:54] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010403990745544434, "senderLatency": 0.010403990745544434, "latencyCalculation": 1394654909.994563}}} [20:04:54] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654694.108, "latencyCalculation": 1394654909.994563}, "playstate": {"paused": true, "position": 323.002}}} [20:04:55] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.009557962417602539, "senderLatency": 0.009557962417602539, "latencyCalculation": 1394654910.994543}}} [20:04:55] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654695.108, "latencyCalculation": 1394654910.994543}, "playstate": {"paused": true, "position": 323.002}}} [20:04:56] Server << {"State": {"playstate": {"paused": true, "position": 323.002, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.009575963020324707, "senderLatency": 0.009575963020324707, "latencyCalculation": 1394654911.994541}}} [20:04:56] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654696.108, "latencyCalculation": 1394654911.994541}, "playstate": {"paused": true, "position": 323.002}}}
10. Bob moves to room TheOtherRoom:
[20:04:56] Client >> {"Set": {"room": {"name": "TheOtherRoom"}}} [20:04:56] Client >> {"List": null} [20:04:56] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "event": {"left": true}}}}} [20:04:56] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": true}, "ping": {"yourLatency": 0.010125041007995605, "senderLatency": 0.010369062423706055, "latencyCalculation": 1394654912.345349}}} [20:04:56] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654696.477, "latencyCalculation": 1394654912.345349}, "playstate": {"paused": true, "position": 0.0}}} [20:04:56] Server << {"Set": {"user": {"Bob": {"room": {"name": "TheOtherRoom"}}}}} [20:04:56] Server << {"List": {"TheOtherRoom": {"Bob": {"position": 0, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}, "Alice": {"position": 0, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [20:04:57] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.0299224853515625, "senderLatency": 0.010474443435668945, "latencyCalculation": 1394654913.34512}}} [20:04:57] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654697.459, "latencyCalculation": 1394654913.34512}, "playstate": {"paused": true, "position": 0.0}}} [20:04:58] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.012543082237243652, "senderLatency": 0.012012958526611328, "latencyCalculation": 1394654914.345385}}} [20:04:58] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654698.459, "latencyCalculation": 1394654914.345385}, "playstate": {"paused": true, "position": 0.0}}} [20:04:59] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.012132406234741211, "senderLatency": 0.011576056480407715, "latencyCalculation": 1394654915.345118}}} [20:04:59] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654699.459, "latencyCalculation": 1394654915.345118}, "playstate": {"paused": true, "position": 0.0}}} [20:05:00] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.01208794116973877, "senderLatency": 0.010756969451904297, "latencyCalculation": 1394654916.345116}}} [20:05:00] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654700.458, "latencyCalculation": 1394654916.345116}, "playstate": {"paused": true, "position": 0.0}}} [20:05:01] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010863065719604492, "senderLatency": 0.010868549346923828, "latencyCalculation": 1394654917.345104}}} [20:05:01] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654701.459, "latencyCalculation": 1394654917.345104}, "playstate": {"paused": true, "position": 0.0}}} [20:05:02] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.010885953903198242, "senderLatency": 0.011063456535339355, "latencyCalculation": 1394654918.345118}}} [20:05:02] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654702.458, "latencyCalculation": 1394654918.345118}, "playstate": {"paused": true, "position": 0.0}}}
11. Alice quits the server:
[20:05:02] Server << {"Set": {"user": {"Alice": {"room": {"name": "TheOtherRoom"}, "event": {"left": true}}}}} [20:05:03] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Alice", "doSeek": false}, "ping": {"yourLatency": 0.012066006660461426, "senderLatency": 0.011017560958862305, "latencyCalculation": 1394654919.345112}}} [20:05:03] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654703.459, "latencyCalculation": 1394654919.345112}, "playstate": {"paused": true, "position": 0.0}}} [20:05:04] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.01184689998626709, "senderLatency": 0.01184689998626709, "latencyCalculation": 1394654920.345099}}} [20:05:04] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654704.458, "latencyCalculation": 1394654920.345099}, "playstate": {"paused": true, "position": 0.0}}} [20:05:05] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010067462921142578, "senderLatency": 0.010067462921142578, "latencyCalculation": 1394654921.345113}}} [20:05:05] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654705.46, "latencyCalculation": 1394654921.345113}, "playstate": {"paused": true, "position": 0.0}}} [20:05:06] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.013854503631591797, "senderLatency": 0.013854503631591797, "latencyCalculation": 1394654922.345097}}} [20:05:06] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654706.459, "latencyCalculation": 1394654922.345097}, "playstate": {"paused": true, "position": 0.0}}} [20:05:07] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010269522666931152, "senderLatency": 0.010269522666931152, "latencyCalculation": 1394654923.345104}}} [20:05:07] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654707.459, "latencyCalculation": 1394654923.345104}, "playstate": {"paused": true, "position": 0.0}}} [20:05:08] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010379552841186523, "senderLatency": 0.010379552841186523, "latencyCalculation": 1394654924.345112}}} [20:05:08] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654708.672, "latencyCalculation": 1394654924.345112}, "playstate": {"paused": true, "position": 0.0}}} [20:05:09] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.11735141277313232, "senderLatency": 0.11735141277313232, "latencyCalculation": 1394654925.345115}}} [20:05:09] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654709.458, "latencyCalculation": 1394654925.345115}, "playstate": {"paused": true, "position": 0.0}}} [20:05:10] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010515570640563965, "senderLatency": 0.010515570640563965, "latencyCalculation": 1394654926.345127}}} [20:05:10] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654710.459, "latencyCalculation": 1394654926.345127}, "playstate": {"paused": true, "position": 0.0}}} [20:05:11] Server << {"State": {"playstate": {"paused": true, "position": 0.0, "setBy": "Bob", "doSeek": false}, "ping": {"yourLatency": 0.010547399520874023, "senderLatency": 0.010547399520874023, "latencyCalculation": 1394654927.345106}}} [20:05:11] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394654711.535, "latencyCalculation": 1394654927.345106}, "playstate": {"paused": true, "position": 0.0}}}
Test case #2
From Bob’s point of view (all with 1.2.7 on a private server):
0. Alice is already in the room playing big_buck_bunny_480p_surround-fix.avi
1. Bob joins server on the room SyncRoom whilst playing big_buck_bunny_480p_surround-fix.avi:
[11:32:34] Client >> {"Hello": {"username": "Bob", "password": "3858f62230ac3c915f300c664312c63f", "room": {"name": "SyncRoom"}, "version": "1.2.7"}} [11:32:34] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "event": {"joined": true}}}}} [11:32:34] Server << {"Hello": {"username": "Bob", "version": "1.2.7", "motd": "\nHello Bob\n\n", "room": {"name": "SyncRoom"}}} [11:32:35] Server << {"State": {"playstate": {"paused": false, "position": 13.181403919186147, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0, "latencyCalculation": 1394710571.616413}}} [11:32:35] Client >> {"State": {"ping": {"clientRtt": 0, "clientLatencyCalculation": 1394710355.188, "latencyCalculation": 1394710571.616413}, "playstate": {"paused": false, "position": 13.20740394207433}}} [11:32:35] Client >> {"Set": {"file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}} [11:32:35] Client >> {"List": null} [11:32:35] Server << {"Set": {"user": {"Bob": {"room": {"name": "SyncRoom"}, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [11:32:35] Server << {"List": {"SyncRoom": {"Bob": {"position": 13.548174901928457, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}, "Alice": {"position": 13.548174901928457, "file": {"duration": 596.458, "name": "big_buck_bunny_480p_surround-fix.avi", "size": 220514438}}}}} [11:32:36] Server << {"State": {"playstate": {"paused": false, "position": 14.011627956356557, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.16968584060668945, "clientLatencyCalculation": 1394710356.0184, "latencyCalculation": 1394710572.616499}}} [11:32:36] Client >> {"State": {"ping": {"clientRtt": 0.023600101470947266, "clientLatencyCalculation": 1394710356.044, "latencyCalculation": 1394710572.616499}, "playstate": {"paused": false, "position": 14.012}}} [11:32:37] Server << {"State": {"playstate": {"paused": false, "position": 15.063935070753098, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021607160568237305, "clientLatencyCalculation": 1394710357.022379, "latencyCalculation": 1394710573.616489}}} [11:32:37] Client >> {"State": {"ping": {"clientRtt": 0.01962113380432129, "clientLatencyCalculation": 1394710357.044, "latencyCalculation": 1394710573.616489}, "playstate": {"paused": false, "position": 15.011}}} [11:32:38] Server << {"State": {"playstate": {"paused": false, "position": 16.055538176953792, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021986961364746094, "clientLatencyCalculation": 1394710358.0220149, "latencyCalculation": 1394710574.616491}}} [11:32:38] Client >> {"State": {"ping": {"clientRtt": 0.019985198974609375, "clientLatencyCalculation": 1394710358.044, "latencyCalculation": 1394710574.616491}, "playstate": {"paused": false, "position": 16.011}}} [11:32:39] Server << {"State": {"playstate": {"paused": false, "position": 17.047398430034516, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02418684959411621, "clientLatencyCalculation": 1394710359.01983, "latencyCalculation": 1394710575.616508}}} [11:32:39] Client >> {"State": {"ping": {"clientRtt": 0.022170066833496094, "clientLatencyCalculation": 1394710359.045, "latencyCalculation": 1394710575.616508}, "playstate": {"paused": false, "position": 17.01}}} [11:32:40] Server << {"State": {"playstate": {"paused": false, "position": 18.037519743105026, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02407693862915039, "clientLatencyCalculation": 1394710360.0209131, "latencyCalculation": 1394710576.6165}}} [11:32:40] Client >> {"State": {"ping": {"clientRtt": 0.021086931228637695, "clientLatencyCalculation": 1394710360.044, "latencyCalculation": 1394710576.6165}, "playstate": {"paused": false, "position": 18.011}}} [11:32:41] Server << {"State": {"playstate": {"paused": false, "position": 19.033800193618944, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022394180297851562, "clientLatencyCalculation": 1394710361.021591, "latencyCalculation": 1394710577.616487}}} [11:32:41] Client >> {"State": {"ping": {"clientRtt": 0.020409107208251953, "clientLatencyCalculation": 1394710361.044, "latencyCalculation": 1394710577.616487}, "playstate": {"paused": false, "position": 19.011}}} [11:32:42] Server << {"State": {"playstate": {"paused": false, "position": 20.029582618666222, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022468090057373047, "clientLatencyCalculation": 1394710362.0215397, "latencyCalculation": 1394710578.616496}}} [11:32:42] Client >> {"State": {"ping": {"clientRtt": 0.02046036720275879, "clientLatencyCalculation": 1394710362.043, "latencyCalculation": 1394710578.616496}, "playstate": {"paused": false, "position": 20.011}}} [11:32:43] Server << {"State": {"playstate": {"paused": false, "position": 21.02541523528859, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022555828094482422, "clientLatencyCalculation": 1394710363.0205052, "latencyCalculation": 1394710579.616558}}} [11:32:43] Client >> {"State": {"ping": {"clientRtt": 0.02149486541748047, "clientLatencyCalculation": 1394710363.044, "latencyCalculation": 1394710579.616558}, "playstate": {"paused": false, "position": 21.011}}} [11:32:44] Server << {"State": {"playstate": {"paused": false, "position": 22.020697901529573, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022656917572021484, "clientLatencyCalculation": 1394710364.021263, "latencyCalculation": 1394710580.616482}}} [11:32:44] Client >> {"State": {"ping": {"clientRtt": 0.020737171173095703, "clientLatencyCalculation": 1394710364.044, "latencyCalculation": 1394710580.616482}, "playstate": {"paused": false, "position": 22.011}}} [11:32:45] Server << {"State": {"playstate": {"paused": false, "position": 23.01854748704446, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02289104461669922, "clientLatencyCalculation": 1394710365.021118, "latencyCalculation": 1394710581.616492}}} [11:32:45] Client >> {"State": {"ping": {"clientRtt": 0.020882129669189453, "clientLatencyCalculation": 1394710365.043, "latencyCalculation": 1394710581.616492}, "playstate": {"paused": false, "position": 23.011}}} [11:32:46] Server << {"State": {"playstate": {"paused": false, "position": 24.015853531559813, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023067951202392578, "clientLatencyCalculation": 1394710366.019923, "latencyCalculation": 1394710582.616485}}} [11:32:46] Client >> {"State": {"ping": {"clientRtt": 0.02107691764831543, "clientLatencyCalculation": 1394710366.043, "latencyCalculation": 1394710582.616485}, "playstate": {"paused": false, "position": 24.011}}} [11:32:47] Server << {"State": {"playstate": {"paused": false, "position": 25.013523615076572, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023223876953125, "clientLatencyCalculation": 1394710367.01977, "latencyCalculation": 1394710583.616482}}} [11:32:47] Client >> {"State": {"ping": {"clientRtt": 0.022230148315429688, "clientLatencyCalculation": 1394710367.043, "latencyCalculation": 1394710583.616482}, "playstate": {"paused": false, "position": 25.011}}} [11:32:48] Server << {"State": {"playstate": {"paused": false, "position": 26.011254228708413, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.03222393989562988, "clientLatencyCalculation": 1394710368.010797, "latencyCalculation": 1394710584.616504}}} [11:32:48] Client >> {"State": {"ping": {"clientRtt": 0.0332028865814209, "clientLatencyCalculation": 1394710368.046, "latencyCalculation": 1394710584.616504}, "playstate": {"paused": false, "position": 26.013}}} [11:32:49] Server << {"State": {"playstate": {"paused": false, "position": 27.010280249742348, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023563146591186523, "clientLatencyCalculation": 1394710369.022431, "latencyCalculation": 1394710585.6165}}} [11:32:49] Client >> {"State": {"ping": {"clientRtt": 0.01956915855407715, "clientLatencyCalculation": 1394710369.043, "latencyCalculation": 1394710585.6165}, "playstate": {"paused": false, "position": 27.01}}} [11:32:50] Server << {"State": {"playstate": {"paused": false, "position": 28.00970979321552, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021783113479614258, "clientLatencyCalculation": 1394710370.0212111, "latencyCalculation": 1394710586.616493}}} [11:32:50] Client >> {"State": {"ping": {"clientRtt": 0.020788908004760742, "clientLatencyCalculation": 1394710370.044, "latencyCalculation": 1394710586.616493}, "playstate": {"paused": false, "position": 28.01}}} [11:32:51] Server << {"State": {"playstate": {"paused": false, "position": 29.007437248669763, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02403712272644043, "clientLatencyCalculation": 1394710371.0199609, "latencyCalculation": 1394710587.616496}}} [11:32:51] Client >> {"State": {"ping": {"clientRtt": 0.022039175033569336, "clientLatencyCalculation": 1394710371.044, "latencyCalculation": 1394710587.616496}, "playstate": {"paused": false, "position": 29.011}}} [11:32:52] Server << {"State": {"playstate": {"paused": false, "position": 30.00632059683034, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.026080846786499023, "clientLatencyCalculation": 1394710372.0179098, "latencyCalculation": 1394710588.616485}}} [11:32:52] Client >> {"State": {"ping": {"clientRtt": 0.024090290069580078, "clientLatencyCalculation": 1394710372.044, "latencyCalculation": 1394710588.616485}, "playstate": {"paused": false, "position": 30.011}}} [11:32:53] Server << {"State": {"playstate": {"paused": false, "position": 31.003534306402848, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.024513959884643555, "clientLatencyCalculation": 1394710373.019481, "latencyCalculation": 1394710589.616482}}} [11:32:53] Client >> {"State": {"ping": {"clientRtt": 0.02251911163330078, "clientLatencyCalculation": 1394710373.044, "latencyCalculation": 1394710589.616482}, "playstate": {"paused": false, "position": 31.011}}} [11:32:54] Server << {"State": {"playstate": {"paused": false, "position": 32.00438947409637, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02242302894592285, "clientLatencyCalculation": 1394710374.0215929, "latencyCalculation": 1394710590.616501}}} [11:32:54] Client >> {"State": {"ping": {"clientRtt": 0.02040719985961914, "clientLatencyCalculation": 1394710374.044, "latencyCalculation": 1394710590.616501}, "playstate": {"paused": false, "position": 32.011}}} [11:32:55] Server << {"State": {"playstate": {"paused": false, "position": 33.00576331545025, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023527860641479492, "clientLatencyCalculation": 1394710375.020457, "latencyCalculation": 1394710591.616488}}} [11:32:55] Client >> {"State": {"ping": {"clientRtt": 0.02054286003112793, "clientLatencyCalculation": 1394710375.043, "latencyCalculation": 1394710591.616488}, "playstate": {"paused": false, "position": 33.011}}} [11:32:56] Server << {"State": {"playstate": {"paused": false, "position": 34.005051853439646, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022609949111938477, "clientLatencyCalculation": 1394710376.020406, "latencyCalculation": 1394710592.616505}}} [11:32:56] Client >> {"State": {"ping": {"clientRtt": 0.020593881607055664, "clientLatencyCalculation": 1394710376.043, "latencyCalculation": 1394710592.616505}, "playstate": {"paused": false, "position": 34.011}}} [11:32:57] Server << {"State": {"playstate": {"paused": false, "position": 35.00447724683903, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022814035415649414, "clientLatencyCalculation": 1394710377.0201771, "latencyCalculation": 1394710593.616499}}} [11:32:57] Client >> {"State": {"ping": {"clientRtt": 0.02182292938232422, "clientLatencyCalculation": 1394710377.044, "latencyCalculation": 1394710593.616499}, "playstate": {"paused": false, "position": 35.011}}} [11:32:58] Server << {"State": {"playstate": {"paused": false, "position": 36.002831362671145, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02302408218383789, "clientLatencyCalculation": 1394710378.020954, "latencyCalculation": 1394710594.61648}}} [11:32:58] Client >> {"State": {"ping": {"clientRtt": 0.020045995712280273, "clientLatencyCalculation": 1394710378.043, "latencyCalculation": 1394710594.61648}, "playstate": {"paused": false, "position": 36.01}}} [11:32:59] Server << {"State": {"playstate": {"paused": false, "position": 37.00332399106275, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023144006729125977, "clientLatencyCalculation": 1394710379.0198832, "latencyCalculation": 1394710595.616508}}} [11:32:59] Client >> {"State": {"ping": {"clientRtt": 0.02111673355102539, "clientLatencyCalculation": 1394710379.043, "latencyCalculation": 1394710595.616508}, "playstate": {"paused": false, "position": 37.011}}}
2. Alice is seriously lagging (i.e. video playing at half speed), and Bob has slow down on desync enabled:
[11:33:00] Server << {"State": {"playstate": {"paused": false, "position": 37.543102739920535, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02528095245361328, "clientLatencyCalculation": 1394710380.017711, "latencyCalculation": 1394710596.6165}}} [11:33:00] Client >> {"State": {"ping": {"clientRtt": 0.023288965225219727, "clientLatencyCalculation": 1394710380.043, "latencyCalculation": 1394710596.6165}, "playstate": {"paused": false, "position": 38.01}}} [11:33:01] Server << {"State": {"playstate": {"paused": false, "position": 38.04283968746441, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.023663997650146484, "clientLatencyCalculation": 1394710381.019328, "latencyCalculation": 1394710597.616493}}} [11:33:01] Client >> {"State": {"ping": {"clientRtt": 0.021671772003173828, "clientLatencyCalculation": 1394710381.043, "latencyCalculation": 1394710597.616493}, "playstate": {"paused": false, "position": 39.01}}} [11:33:02] Server << {"State": {"playstate": {"paused": false, "position": 38.54248305530956, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.024033069610595703, "clientLatencyCalculation": 1394710382.018964, "latencyCalculation": 1394710598.616491}}} [11:33:02] Client >> {"State": {"ping": {"clientRtt": 0.022035837173461914, "clientLatencyCalculation": 1394710382.043, "latencyCalculation": 1394710598.616491}, "playstate": {"paused": false, "position": 40.01}}} [11:33:03] Server << {"State": {"playstate": {"paused": false, "position": 39.04239374964107, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02195882797241211, "clientLatencyCalculation": 1394710383.021045, "latencyCalculation": 1394710599.616493}}} [11:33:03] Client >> {"State": {"ping": {"clientRtt": 0.019954919815063477, "clientLatencyCalculation": 1394710383.088, "latencyCalculation": 1394710599.616493}, "playstate": {"paused": false, "position": 41.01}}} [11:33:04] Server << {"State": {"playstate": {"paused": false, "position": 39.542964103183834, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.07415890693664551, "clientLatencyCalculation": 1394710384.013851, "latencyCalculation": 1394710600.616501}}} [11:33:04] Client >> {"State": {"ping": {"clientRtt": 0.028149127960205078, "clientLatencyCalculation": 1394710384.044, "latencyCalculation": 1394710600.616501}, "playstate": {"paused": false, "position": 41.862}}} [11:33:05] Server << {"State": {"playstate": {"paused": false, "position": 40.04201305069073, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02235579490661621, "clientLatencyCalculation": 1394710385.02163, "latencyCalculation": 1394710601.616486}}} [11:33:05] Client >> {"State": {"ping": {"clientRtt": 0.020370006561279297, "clientLatencyCalculation": 1394710385.043, "latencyCalculation": 1394710601.616486}, "playstate": {"paused": false, "position": 42.812}}} [11:33:06] Server << {"State": {"playstate": {"paused": false, "position": 40.54355145983211, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022426843643188477, "clientLatencyCalculation": 1394710386.020586, "latencyCalculation": 1394710602.616499}}} [11:33:06] Client >> {"State": {"ping": {"clientRtt": 0.02141404151916504, "clientLatencyCalculation": 1394710386.043, "latencyCalculation": 1394710602.616499}, "playstate": {"paused": false, "position": 43.762}}} [11:33:07] Server << {"State": {"playstate": {"paused": false, "position": 41.043625661004235, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022678136825561523, "clientLatencyCalculation": 1394710387.020321, "latencyCalculation": 1394710603.616499}}} [11:33:07] Client >> {"State": {"ping": {"clientRtt": 0.02267909049987793, "clientLatencyCalculation": 1394710387.045, "latencyCalculation": 1394710603.616499}, "playstate": {"paused": false, "position": 44.713}}} [11:33:08] Server << {"State": {"playstate": {"paused": false, "position": 41.54151945671673, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.025272130966186523, "clientLatencyCalculation": 1394710388.019716, "latencyCalculation": 1394710604.616489}}} [11:33:08] Client >> {"State": {"ping": {"clientRtt": 0.021283864974975586, "clientLatencyCalculation": 1394710388.055, "latencyCalculation": 1394710604.616489}, "playstate": {"paused": false, "position": 41.552}}} [11:33:09] Server << {"State": {"playstate": {"paused": false, "position": 42.04256171500136, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.03494000434875488, "clientLatencyCalculation": 1394710389.020066, "latencyCalculation": 1394710605.616494}}} [11:33:09] Client >> {"State": {"ping": {"clientRtt": 0.020933866500854492, "clientLatencyCalculation": 1394710389.043, "latencyCalculation": 1394710605.616494}, "playstate": {"paused": false, "position": 42.453}}} [11:33:10] Server << {"State": {"playstate": {"paused": false, "position": 42.54253546294105, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022979021072387695, "clientLatencyCalculation": 1394710390.020031, "latencyCalculation": 1394710606.616505}}} [11:33:10] Client >> {"State": {"ping": {"clientRtt": 0.020968914031982422, "clientLatencyCalculation": 1394710390.043, "latencyCalculation": 1394710606.616505}, "playstate": {"paused": false, "position": 43.403}}} [11:33:11] Server << {"State": {"playstate": {"paused": false, "position": 43.042914074326085, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.027178049087524414, "clientLatencyCalculation": 1394710391.015813, "latencyCalculation": 1394710607.616498}}} [11:33:11] Client >> {"State": {"ping": {"clientRtt": 0.025186777114868164, "clientLatencyCalculation": 1394710391.043, "latencyCalculation": 1394710607.616498}, "playstate": {"paused": false, "position": 44.354}}} [11:33:12] Server << {"State": {"playstate": {"paused": false, "position": 43.54183532494589, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.023293018341064453, "clientLatencyCalculation": 1394710392.0197048, "latencyCalculation": 1394710608.616496}}} [11:33:12] Client >> {"State": {"ping": {"clientRtt": 0.02129507064819336, "clientLatencyCalculation": 1394710392.043, "latencyCalculation": 1394710608.616496}, "playstate": {"paused": false, "position": 45.302}}} [11:33:13] Server << {"State": {"playstate": {"paused": false, "position": 44.04270005720796, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02365398406982422, "clientLatencyCalculation": 1394710393.0193481, "latencyCalculation": 1394710609.616497}}} [11:33:13] Client >> {"State": {"ping": {"clientRtt": 0.021651744842529297, "clientLatencyCalculation": 1394710393.043, "latencyCalculation": 1394710609.616497}, "playstate": {"paused": false, "position": 46.253}}} [11:33:14] Server << {"State": {"playstate": {"paused": false, "position": 44.541243206223356, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.023580074310302734, "clientLatencyCalculation": 1394710394.019408, "latencyCalculation": 1394710610.616487}}} [11:33:14] Client >> {"State": {"ping": {"clientRtt": 0.021591901779174805, "clientLatencyCalculation": 1394710394.043, "latencyCalculation": 1394710610.616487}, "playstate": {"paused": false, "position": 47.203}}} [11:33:15] Server << {"State": {"playstate": {"paused": false, "position": 45.042209611012964, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02373194694519043, "clientLatencyCalculation": 1394710395.019274, "latencyCalculation": 1394710611.616493}}} [11:33:15] Client >> {"State": {"ping": {"clientRtt": 0.02372598648071289, "clientLatencyCalculation": 1394710395.044, "latencyCalculation": 1394710611.616493}, "playstate": {"paused": false, "position": 48.155}}} [11:33:16] Server << {"State": {"playstate": {"paused": false, "position": 45.542130941501526, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.03547501564025879, "clientLatencyCalculation": 1394710396.0085428, "latencyCalculation": 1394710612.616512}}} [11:33:16] Client >> {"State": {"ping": {"clientRtt": 0.03245711326599121, "clientLatencyCalculation": 1394710396.043, "latencyCalculation": 1394710612.616512}, "playstate": {"paused": false, "position": 49.103}}} [11:33:17] Server << {"State": {"playstate": {"paused": false, "position": 46.04196758441783, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.024065017700195312, "clientLatencyCalculation": 1394710397.018913, "latencyCalculation": 1394710613.616489}}} [11:33:17] Client >> {"State": {"ping": {"clientRtt": 0.02208685874938965, "clientLatencyCalculation": 1394710397.059, "latencyCalculation": 1394710613.616489}, "playstate": {"paused": false, "position": 46.053}}} [11:33:18] Server << {"State": {"playstate": {"paused": false, "position": 47.04551423903941, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.04401516914367676, "clientLatencyCalculation": 1394710398.014983, "latencyCalculation": 1394710614.616488}}} [11:33:18] Client >> {"State": {"ping": {"clientRtt": 0.26901698112487793, "clientLatencyCalculation": 1394710398.341, "latencyCalculation": 1394710614.616488}, "playstate": {"paused": false, "position": 47.194}}} [11:33:19] Server << {"State": {"playstate": {"paused": false, "position": 47.88905183649486, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.32318902015686035, "clientLatencyCalculation": 1394710399.017824, "latencyCalculation": 1394710615.616501}}} [11:33:19] Client >> {"State": {"ping": {"clientRtt": 0.023175954818725586, "clientLatencyCalculation": 1394710399.043, "latencyCalculation": 1394710615.616501}, "playstate": {"paused": false, "position": 47.852}}} [11:33:20] Server << {"State": {"playstate": {"paused": false, "position": 48.861769041232186, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02463698387145996, "clientLatencyCalculation": 1394710400.018342, "latencyCalculation": 1394710616.616481}}} [11:33:20] Client >> {"State": {"ping": {"clientRtt": 0.02265787124633789, "clientLatencyCalculation": 1394710400.042, "latencyCalculation": 1394710616.616481}, "playstate": {"paused": false, "position": 48.852}}} [11:33:21] Server << {"State": {"playstate": {"paused": false, "position": 49.859051015951366, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022763967514038086, "clientLatencyCalculation": 1394710401.0192351, "latencyCalculation": 1394710617.616483}}} [11:33:21] Client >> {"State": {"ping": {"clientRtt": 0.028764963150024414, "clientLatencyCalculation": 1394710401.049, "latencyCalculation": 1394710617.616483}, "playstate": {"paused": false, "position": 49.859}}} [11:33:22] Server << {"State": {"playstate": {"paused": false, "position": 50.858582073389904, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.042140960693359375, "clientLatencyCalculation": 1394710402.006861, "latencyCalculation": 1394710618.616483}}} [11:33:22] Client >> {"State": {"ping": {"clientRtt": 0.03413891792297363, "clientLatencyCalculation": 1394710402.043, "latencyCalculation": 1394710618.616483}, "playstate": {"paused": false, "position": 50.851}}} [11:33:23] Server << {"State": {"playstate": {"paused": false, "position": 51.85383604274641, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023023128509521484, "clientLatencyCalculation": 1394710403.01999, "latencyCalculation": 1394710619.616497}}} [11:33:23] Client >> {"State": {"ping": {"clientRtt": 0.02100992202758789, "clientLatencyCalculation": 1394710403.042, "latencyCalculation": 1394710619.616497}, "playstate": {"paused": false, "position": 51.851}}} [11:33:24] Server << {"State": {"playstate": {"paused": false, "position": 52.85354069962981, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021281003952026367, "clientLatencyCalculation": 1394710404.020725, "latencyCalculation": 1394710620.616504}}} [11:33:24] Client >> {"State": {"ping": {"clientRtt": 0.020274877548217773, "clientLatencyCalculation": 1394710404.042, "latencyCalculation": 1394710620.616504}, "playstate": {"paused": false, "position": 52.851}}} [11:33:25] Server << {"State": {"playstate": {"paused": false, "position": 53.85229242458989, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021413087844848633, "clientLatencyCalculation": 1394710405.020561, "latencyCalculation": 1394710621.616478}}} [11:33:25] Client >> {"State": {"ping": {"clientRtt": 0.02043890953063965, "clientLatencyCalculation": 1394710405.043, "latencyCalculation": 1394710621.616478}, "playstate": {"paused": false, "position": 53.851}}} [11:33:26] Server << {"State": {"playstate": {"paused": false, "position": 54.850697184177164, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02366495132446289, "clientLatencyCalculation": 1394710406.01935, "latencyCalculation": 1394710622.616494}}} [11:33:26] Client >> {"State": {"ping": {"clientRtt": 0.021649837493896484, "clientLatencyCalculation": 1394710406.043, "latencyCalculation": 1394710622.616494}, "playstate": {"paused": false, "position": 54.851}}} [11:33:27] Server << {"State": {"playstate": {"paused": false, "position": 55.84819414439811, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.02367711067199707, "clientLatencyCalculation": 1394710407.019307, "latencyCalculation": 1394710623.616479}}} [11:33:27] Client >> {"State": {"ping": {"clientRtt": 0.021692991256713867, "clientLatencyCalculation": 1394710407.043, "latencyCalculation": 1394710623.616479}, "playstate": {"paused": false, "position": 55.852}}} [11:33:28] Server << {"State": {"playstate": {"paused": false, "position": 56.84814769943517, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.0240631103515625, "clientLatencyCalculation": 1394710408.0189588, "latencyCalculation": 1394710624.616501}}} [11:33:28] Client >> {"State": {"ping": {"clientRtt": 0.02204108238220215, "clientLatencyCalculation": 1394710408.044, "latencyCalculation": 1394710624.616501}, "playstate": {"paused": false, "position": 56.852}}}
3. Alice changes file to ‘Windows Movie Maker Sample File.wmv’:
[11:33:28] Server << {"Set": {"user": {"Alice": {"room": {"name": "SyncRoom"}, "file": {"duration": 12.712, "name": "Windows Movie Maker Sample File.wmv", "size": 369565}}}}} [11:33:28] Server << {"State": {"ignoringOnTheFly": {"server": 1}, "playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": true}, "ping": {"serverRtt": 0.026033878326416016, "clientLatencyCalculation": 1394710408.373045, "latencyCalculation": 1394710624.97158}}} [11:33:28] Client >> {"State": {"ignoringOnTheFly": {"server": 1}, "ping": {"clientRtt": 0.18695497512817383, "clientLatencyCalculation": 1394710408.598, "latencyCalculation": 1394710624.97158}, "playstate": {"paused": true, "position": 12.712}}} [11:33:29] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.22725987434387207, "clientLatencyCalculation": 1394710409.0156622, "latencyCalculation": 1394710625.616503}}} [11:33:29] Client >> {"State": {"ping": {"clientRtt": 0.025337696075439453, "clientLatencyCalculation": 1394710409.041, "latencyCalculation": 1394710625.616503}, "playstate": {"paused": true, "position": 12.712}}} [11:33:30] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.0223391056060791, "clientLatencyCalculation": 1394710410.018861, "latencyCalculation": 1394710626.616709}}} [11:33:30] Client >> {"State": {"ping": {"clientRtt": 0.02213883399963379, "clientLatencyCalculation": 1394710410.041, "latencyCalculation": 1394710626.616709}, "playstate": {"paused": true, "position": 12.712}}} [11:33:31] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022221088409423828, "clientLatencyCalculation": 1394710411.0185628, "latencyCalculation": 1394710627.616496}}} [11:33:31] Client >> {"State": {"ping": {"clientRtt": 0.022437095642089844, "clientLatencyCalculation": 1394710411.041, "latencyCalculation": 1394710627.616496}, "playstate": {"paused": true, "position": 12.712}}} [11:33:32] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02252793312072754, "clientLatencyCalculation": 1394710412.018467, "latencyCalculation": 1394710628.616493}}} [11:33:32] Client >> {"State": {"ping": {"clientRtt": 0.02153301239013672, "clientLatencyCalculation": 1394710412.04, "latencyCalculation": 1394710628.616493}, "playstate": {"paused": true, "position": 12.712}}} [11:33:33] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.021249055862426758, "clientLatencyCalculation": 1394710413.01875, "latencyCalculation": 1394710629.616493}}} [11:33:33] Client >> {"State": {"ping": {"clientRtt": 0.021250009536743164, "clientLatencyCalculation": 1394710413.04, "latencyCalculation": 1394710629.616493}, "playstate": {"paused": true, "position": 12.712}}} [11:33:34] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.02086496353149414, "clientLatencyCalculation": 1394710414.0191379, "latencyCalculation": 1394710630.616499}}} [11:33:34] Client >> {"State": {"ping": {"clientRtt": 0.021862030029296875, "clientLatencyCalculation": 1394710414.041, "latencyCalculation": 1394710630.616499}, "playstate": {"paused": true, "position": 12.712}}} [11:33:35] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.023218154907226562, "clientLatencyCalculation": 1394710415.0177689, "latencyCalculation": 1394710631.616489}}} [11:33:35] Client >> {"State": {"ping": {"clientRtt": 0.022231101989746094, "clientLatencyCalculation": 1394710415.04, "latencyCalculation": 1394710631.616489}, "playstate": {"paused": true, "position": 12.712}}} [11:33:36] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022416114807128906, "clientLatencyCalculation": 1394710416.017581, "latencyCalculation": 1394710632.616489}}} [11:33:36] Client >> {"State": {"ping": {"clientRtt": 0.15041899681091309, "clientLatencyCalculation": 1394710416.168, "latencyCalculation": 1394710632.616489}, "playstate": {"paused": true, "position": 12.712}}} [11:33:37] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.15158605575561523, "clientLatencyCalculation": 1394710417.01642, "latencyCalculation": 1394710633.616495}}} [11:33:37] Client >> {"State": {"ping": {"clientRtt": 0.023580074310302734, "clientLatencyCalculation": 1394710417.04, "latencyCalculation": 1394710633.616495}, "playstate": {"paused": true, "position": 12.712}}} [11:33:38] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.021877050399780273, "clientLatencyCalculation": 1394710418.018116, "latencyCalculation": 1394710634.616488}}} [11:33:38] Client >> {"State": {"ping": {"clientRtt": 0.02188396453857422, "clientLatencyCalculation": 1394710418.041, "latencyCalculation": 1394710634.616488}, "playstate": {"paused": true, "position": 12.712}}} [11:33:39] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.021812915802001953, "clientLatencyCalculation": 1394710419.019187, "latencyCalculation": 1394710635.616488}}} [11:33:39] Client >> {"State": {"ping": {"clientRtt": 0.021812915802001953, "clientLatencyCalculation": 1394710419.041, "latencyCalculation": 1394710635.616488}, "playstate": {"paused": true, "position": 12.712}}} [11:33:40] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.024101972579956055, "clientLatencyCalculation": 1394710420.0168939, "latencyCalculation": 1394710636.616486}}} [11:33:40] Client >> {"State": {"ping": {"clientRtt": 0.02410602569580078, "clientLatencyCalculation": 1394710420.041, "latencyCalculation": 1394710636.616486}, "playstate": {"paused": true, "position": 12.712}}} [11:33:41] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022140979766845703, "clientLatencyCalculation": 1394710421.01886, "latencyCalculation": 1394710637.616487}}} [11:33:41] Client >> {"State": {"ping": {"clientRtt": 0.030139923095703125, "clientLatencyCalculation": 1394710421.049, "latencyCalculation": 1394710637.616487}, "playstate": {"paused": true, "position": 12.712}}} [11:33:42] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.03017902374267578, "clientLatencyCalculation": 1394710422.0188339, "latencyCalculation": 1394710638.616502}}} [11:33:42] Client >> {"State": {"ping": {"clientRtt": 0.021166086196899414, "clientLatencyCalculation": 1394710422.04, "latencyCalculation": 1394710638.616502}, "playstate": {"paused": true, "position": 12.712}}} [11:33:43] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.020545005798339844, "clientLatencyCalculation": 1394710423.01945, "latencyCalculation": 1394710639.6165}}} [11:33:43] Client >> {"State": {"ping": {"clientRtt": 0.020550012588500977, "clientLatencyCalculation": 1394710423.04, "latencyCalculation": 1394710639.6165}, "playstate": {"paused": true, "position": 12.712}}} [11:33:44] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.0205690860748291, "clientLatencyCalculation": 1394710424.019413, "latencyCalculation": 1394710640.616486}}} [11:33:44] Client >> {"State": {"ping": {"clientRtt": 0.021586894989013672, "clientLatencyCalculation": 1394710424.041, "latencyCalculation": 1394710640.616486}, "playstate": {"paused": true, "position": 12.712}}} [11:33:45] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.022660017013549805, "clientLatencyCalculation": 1394710425.018347, "latencyCalculation": 1394710641.616496}}} [11:33:45] Client >> {"State": {"ping": {"clientRtt": 0.021652936935424805, "clientLatencyCalculation": 1394710425.04, "latencyCalculation": 1394710641.616496}, "playstate": {"paused": true, "position": 12.712}}}
4. Alice joins TheOtherRoom
[11:33:45] Server << {"Set": {"user": {"Alice": {"room": {"name": "TheOtherRoom"}}}}} [11:33:46] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Alice", "doSeek": false}, "ping": {"serverRtt": 0.023588895797729492, "clientLatencyCalculation": 1394710426.016426, "latencyCalculation": 1394710642.616513}}} [11:33:46] Client >> {"State": {"ping": {"clientRtt": 0.023573875427246094, "clientLatencyCalculation": 1394710426.04, "latencyCalculation": 1394710642.616513}, "playstate": {"paused": true, "position": 12.712}}} [11:33:47] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021210908889770508, "clientLatencyCalculation": 1394710427.018798, "latencyCalculation": 1394710643.616524}}} [11:33:47] Client >> {"State": {"ping": {"clientRtt": 0.02120184898376465, "clientLatencyCalculation": 1394710427.04, "latencyCalculation": 1394710643.616524}, "playstate": {"paused": true, "position": 12.712}}} [11:33:48] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021225929260253906, "clientLatencyCalculation": 1394710428.0187871, "latencyCalculation": 1394710644.616539}}} [11:33:48] Client >> {"State": {"ping": {"clientRtt": 0.02121281623840332, "clientLatencyCalculation": 1394710428.04, "latencyCalculation": 1394710644.616539}, "playstate": {"paused": true, "position": 12.712}}} [11:33:49] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021296024322509766, "clientLatencyCalculation": 1394710429.018677, "latencyCalculation": 1394710645.616513}}} [11:33:49] Client >> {"State": {"ping": {"clientRtt": 0.02332305908203125, "clientLatencyCalculation": 1394710429.042, "latencyCalculation": 1394710645.616513}, "playstate": {"paused": true, "position": 12.712}}} [11:33:50] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.023587942123413086, "clientLatencyCalculation": 1394710430.0184221, "latencyCalculation": 1394710646.616526}}} [11:33:50] Client >> {"State": {"ping": {"clientRtt": 0.021577835083007812, "clientLatencyCalculation": 1394710430.04, "latencyCalculation": 1394710646.616526}, "playstate": {"paused": true, "position": 12.712}}} [11:33:51] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.021747112274169922, "clientLatencyCalculation": 1394710431.0182219, "latencyCalculation": 1394710647.616495}}} [11:33:51] Client >> {"State": {"ping": {"clientRtt": 0.14777803421020508, "clientLatencyCalculation": 1394710431.166, "latencyCalculation": 1394710647.616495}, "playstate": {"paused": true, "position": 12.712}}} [11:33:52] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.16815614700317383, "clientLatencyCalculation": 1394710431.997869, "latencyCalculation": 1394710648.616519}}} [11:33:52] Client >> {"State": {"ping": {"clientRtt": 0.041131019592285156, "clientLatencyCalculation": 1394710432.039, "latencyCalculation": 1394710648.616519}, "playstate": {"paused": true, "position": 12.712}}} [11:33:53] Server << {"State": {"playstate": {"paused": true, "position": 12.712, "setBy": "Bob", "doSeek": false}, "ping": {"serverRtt": 0.022114038467407227, "clientLatencyCalculation": 1394710433.016898, "latencyCalculation": 1394710649.616531}}} [11:33:53] Client >> {"State": {"ping": {"clientRtt": 0.02210211753845215, "clientLatencyCalculation": 1394710433.039, "latencyCalculation": 1394710649.616531}, "playstate": {"paused": true, "position": 12.712}}}
<– The number of people who, after having read this page, have decided to implement the Syncplay protocol (give or take 7 orders of magnitude).