длинный опрос netty nio framework java
-
21-09-2019 - |
Вопрос
Как я могу выполнить длительный опрос, используя нетти рамки?Скажем, например, я приношу http://localhost/waitforx
но waitforx
является ли асинхронным, потому что он должен ждать события?Скажем, например, он извлекает что-то из блокирующей очереди (может извлекаться только тогда, когда данные в очереди).При получении элемента из очереди я хотел бы отправить данные обратно клиенту.Надеюсь, кто-нибудь сможет дать мне несколько советов, как это сделать.
Большое спасибо
Решение
Вы могли бы сначала написать заголовок ответа, а затем отправить тело (содержимое) позже из другого потока.
void messageReceived(...) {
HttpResponse res = new DefaultHttpResponse(...);
res.setHeader(...);
...
channel.write(res);
}
// In a different thread..
ChannelBuffer partialContent = ...;
channel.write(partialContent);
Другие советы
Вы можете использовать нетти-сокетио проект.Это реализация Socket.IO сервер с поддержкой длительного опроса.На веб-стороне вы можете использовать Сокет.Клиент ввода-вывода библиотека javascript.
Вы также могли бы сделать следующее в [sfnrpc]: http://code.google.com/p/sfnrpc
Object object = RPCClient.getInstance().invoke("#URN1","127.0.0.1:6878","echo",true,60,"", objArr,classArr, sl);
Истина приводит к тому, что коммуникация становится синхронной.