[ 
https://issues.apache.org/jira/browse/WICKET-604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jean-Baptiste Quenot updated WICKET-604:
----------------------------------------

    Fix Version/s: 1.3.0-beta4

Looks reasonable to do for the next release

> 'Wicket.Channel' name is not accessible in ajax related classes
> ---------------------------------------------------------------
>
>                 Key: WICKET-604
>                 URL: https://issues.apache.org/jira/browse/WICKET-604
>             Project: Wicket
>          Issue Type: Improvement
>            Reporter: Peter Ertl
>             Fix For: 1.3.0-beta4
>
>         Attachments: ajax-channel-manager.patch
>
>
> I am trying to implement a chat client using jetty continuations and a push 
> model.
> to update the list of chat messages I added an AbstractAjaxTimerBehavior:
> IBehavior refresh = new AbstractAjaxTimerBehavior(Duration.milliseconds(250)) 
> // repeat again and again
> {
>   @Override
>   protected void onTimer(AjaxRequestTarget target)
>   {
>      // update messages
>   }
> }
> actually this timer behavior will continuously create XmlHtttpRequests to 
> update the list. the requests will be paused using jetty continuations and 
> return on events or eventually time out and restart instantly. so you get 
> immediate updates without wasting resources on the server.
> AbstractAjaxTimerBehavior will call
>   return getCallbackScript("wicketAjaxGet('" + 
> getCallbackUrl(onlyTargetActivePage()) + "'", null, null, precondition);
> to generate an wicketAjaxGet call.
> unfortunately, when adding another ajax component for submitting messages the 
> following will be shown in ajax debug window when clicking on 'SendMessage' 
> while the refresh request is active:
>  [ INFO: Channel busy - postponing... ]
> this is because SubmitMessage and AbstractAjaxTimerBehavior use the same 
> Wicket.Channel. the default channel is of type queue so request will be 
> serialized.
> So, in order to have to different, concurrently running XmlHttpRequest's you 
> would need access to the channel name.
> I would suggest to add the following method to AbstractDefaultAjaxBehavior:
>   protected CharSequence getCallbackScript(final CharSequence partialCall, 
>     final CharSequence onSuccessScript, final CharSequence onFailureScript, 
>     final CharSequence precondition, CharSequence channel);
> I attached a patch as an suggestion on how to do this...
> I did a local test of this patch and everything works as a charm now...
> This would be great for any push model ajax stuff to have....
> Also, it makes no sense to permit access to the wonderful 
> Wicket.ChannelManager functionality :-)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to