2010-02-19 2 views
10

Как сделать длинный опрос с использованием netty рамки? Скажем, например, я получаю http://localhost/waitforxдлинный опрос netty nio рамки java

но waitforx является асинхронным, поскольку он должен ждать события? Скажем, например, он извлекает что-то из блокирующей очереди (может только извлекать данные в очереди). При получении элемента из очереди я хотел бы отправить данные обратно клиенту. Надеюсь, кто-то может дать мне несколько советов, как это сделать.

Большое спасибо

ответ

10

Вы могли бы написать заголовок ответа, а затем отправить тело (содержание) позже из другого потока.

+0

Действительно ли это работает? Можете ли вы писать на канал из другого потока? Это поточно-безопасный? –

+0

Да, это поточно-безопасный –

+1

Как «разные потоки» знают, какой канал использовать? Например, клиент1 делает длинный опрос, мне нужно поместить канал в HashMap и получить его после того, как событие произошло, чтобы я мог отправить частичный контент? – pkrish

3

Вы можете использовать проект netty-socketio. Это реализация сервера Socket.IO с поддержкой длинных опросов. На веб-странице вы можете использовать javascript-библиотеку Socket.IO client.

0

Вы также можете сделать следующее в [sfnrpc]: http://code.google.com/p/sfnrpc

Object object = RPCClient.getInstance().invoke("#URN1","127.0.0.1:6878","echo",true,60,"", objArr,classArr, sl); 

Истинные причины связи синхронными.