Mercurial > urweb
annotate tests/spawn.ur @ 1726:4df4521fbd3b
Removed excess zero byte from empty pages.
Zero byte sometimes breaks http tunneling in Safari. Empty page is a "Not Modified" response for app.js
author | Vladimir Shabanov <vshabanoff@gmail.com> |
---|---|
date | Wed, 25 Apr 2012 03:07:07 +0400 |
parents | 7ea0df9e56b6 |
children |
rev | line source |
---|---|
adamc@694 | 1 table t : {A : int, Ch : channel string} |
adamc@694 | 2 |
adamc@694 | 3 fun listener n ch = |
adamc@694 | 4 s <- recv ch; |
adamc@694 | 5 alert (show n ^ ": " ^ s); |
adamc@694 | 6 listener n ch |
adamc@694 | 7 |
adamc@694 | 8 fun speak id msg = |
adamc@694 | 9 r <- oneRow (SELECT t.Ch FROM t WHERE t.A = {[id]}); |
adamc@694 | 10 send r.T.Ch msg |
adamc@694 | 11 |
adamc@694 | 12 fun main () : transaction page = |
adamc@694 | 13 ch1 <- channel; |
adamc@694 | 14 dml (INSERT INTO t (A, Ch) VALUES (1, {[ch1]})); |
adamc@694 | 15 ch2 <- channel; |
adamc@694 | 16 dml (INSERT INTO t (A, Ch) VALUES (2, {[ch2]})); |
adamc@694 | 17 |
adamc@694 | 18 s1 <- source ""; |
adamc@694 | 19 s2 <- source ""; |
adamc@694 | 20 |
adamc@694 | 21 return <xml><body onload={spawn (listener 1 ch1); spawn (listener 2 ch2)}> |
adamc@694 | 22 1: <ctextbox source={s1}/><button onclick={msg <- get s1; speak 1 msg}/><br/> |
adamc@694 | 23 2: <ctextbox source={s2}/><button onclick={msg <- get s2; speak 2 msg}/> |
adamc@694 | 24 </body></xml> |