- From: Mike Belshe <mike@belshe.com>
- Date: Tue, 1 Jun 2010 08:34:15 -0700
On Tue, Jun 1, 2010 at 4:24 AM, Kornel Lesinski <kornel at geekhood.net> wrote: > On 1 Jun 2010, at 11:12, Erik M?ller wrote: > > > The use case I'd like to address in this post is Real-time client/server > games. > > > > The majority of the on-line games of today use a client/server model over > UDP and we should try to give game developers the tools they require to > create browser based games. For many simpler games a TCP based protocol is > exactly what's needed but for most real-time games a UDP based protocol is a > requirement. Games typically send small updates to its server at 20-30Hz > over UDP and can with the help of entity interpolation and if required > entity extrapolation cope well with intermittent packet loss. When a packet > loss occur in a TCP based protocol the entire stream of data is held up > until the packet is resent meaning a game would have to revert to entity > extrapolation possibly over several seconds, leading to an unacceptable > gameplay experience. > > > > It seems to me the WebSocket interface can be easily modified to cope > with UDP sockets (a wsd: scheme perhaps?) and it sounds like a good idea to > leverage the work already done for WebSockets in terms of interface and > framing. > > > > The most important distinction between ws: and wsd: is that messages sent > by send() in wsd: need not be acknowledged by the peer nor be resent. To > keep the interface the same to the largest possible extent I'd suggest > implementing a simple reliable 3-way handshake over UDP, keep-alive messages > (and timeouts) and reliable close frames. If these are implemented right the > interface in it's entirety could be kept. Only one new readonly attribute > long maxMessageSize could be introduced to describe the min path MTU > (perhaps only valid once in connected mode, or perhaps set to 0 or 576 > initially and updated once in connected mode). This attribute could also be > useful to expose in ws: and wss: but in that case be set to the internal > limit of the browser / server. > > SCTP would be ideal for this. It's connection-oriented, but supports > multistreaming (can deliver messages out of order, without head of line > blocking). > > http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol FYI: SCTP is effectively non-deployable on the internet today due to NAT. +1 on finding ways to enable UDP. It's a key missing component to the web platform. Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20100601/e3a940b7/attachment-0001.htm>
Received on Tuesday, 1 June 2010 08:34:15 UTC