Ticket #23 (assigned task)

Opened 1 year ago

Last modified 6 months ago

RPC communication with XHR long polling

Reported by: psychcf Assigned to: psychcf (accepted)
Priority: critical Milestone: 1.1
Component: other Version: trunk
Keywords: Cc:

Description (Last modified by psychcf)

Crosstalk constantly pinging is creating a bottleneck on the client. This method of communication uses less connections, and solve the issue.

I've attached a flowchart that I drew up on how it will work.

Attachments

server-client interactions.png (110.0 kB) - added by psychcf on 01/28/08 00:40:16.
Flowchart
server-client interactions.flw (21.0 kB) - added by psychcf on 01/28/08 00:41:39.
Flowchart (Kivio file)

Change History

01/28/08 00:40:16 changed by psychcf

  • attachment server-client interactions.png added.

Flowchart

01/28/08 00:41:39 changed by psychcf

  • attachment server-client interactions.flw added.

Flowchart (Kivio file)

01/28/08 01:07:56 changed by psychcf

  • milestone set to 2.0.

01/28/08 18:25:41 changed by psychcf

I just realized that in the python backends we can have each backend use it's own thread, so it will be much faster. It should be an option though, not all setups will be able to handle multiple threads.

As for PHP, I have no clue how to do threads, or if it even makes a difference in benchmarks (some languages implement "fake" threading).

02/12/08 15:50:07 changed by psychcf

  • description changed.
  • summary changed from Action based server communication to RPC communication with XHR long polling.

I just discovered the magic of JSON-RPC/RPC today. It's pretty much what we're doing.

02/12/08 15:53:09 changed by psychcf

Oh yeah, long polling may be a problem when it comes to server scalability. Wikipedia has something on this: http://en.wikipedia.org/wiki/Comet_(programming)#Scalability

But with this model polling can still work... maybe we should have it optional?

04/25/08 20:46:28 changed by psychcf

  • priority changed from major to critical.

04/25/08 20:50:04 changed by psychcf

  • milestone changed from 1.5 to 1.1.

07/09/08 18:06:24 changed by psychcf

  • status changed from new to assigned.

Ok, I just programmed the connection manager on the client, and got RPC wired up. dojo's RPC module should batch the calls up for us, and the connection manager will close a long-poll when a short XHR is made. Once everything has been rewritten for RPC, and the client-side code is rewritten to make use of it, we can close this ticket.