index.erl 713 B

1234567891011121314151617181920
  1. -module(index).
  2. -compile(export_all).
  3. -include_lib("n2o/include/wf.hrl").
  4. peer() -> io_lib:format("~p",[wf:peer(?REQ)]).
  5. message() -> wf:js_escape(wf:html_encode(wf:q(message))).
  6. main() -> #dtl{file="index",app=n2o_sample,bindings=[{body,body()}]}.
  7. body() ->
  8. {ok,Pid} = wf:comet(fun() -> chat_loop() end),
  9. [ #panel{id=history}, #textbox{id=message},
  10. #button{id=send,body="Chat",postback={chat,Pid},source=[message]} ].
  11. event(init) -> wf:reg(room);
  12. event({chat,Pid}) -> Pid ! {peer(), message()};
  13. event(Event) -> skip.
  14. chat_loop() ->
  15. receive {Peer, Message} ->
  16. wf:insert_bottom(history,#panel{id=history,body=[Peer,": ",Message,#br{}]}),
  17. wf:flush(room) end, chat_loop().