Почему в Comet (Long-Polling) данные не приходят моментально?
У меня не получается сразу получать новые данные - они приходят только после нового выполнения функции getmess, которая выполняется по истечению таймера, в чем может быть ошибка?
@olegmar хм.. я хочу реализовать long-polling запрос. setTimeout в моем случае подразумевается переподключение к серверу через 10 сек, т. е за эти 10с могу возникнуть события, и если они возникли они тут же(т .е как только их обнаружил цикл while(true){...}) отправляются клиенту.Да задержки я предполагаю.Но в моем случае, когда возникают события, они отправляются клиенту только при повторном вызове функции getmess, а не во время соединения с сервером.
Лонг поллинг это не websocket - принимается один месседж и отсоединяется. Нужно заворачивать присоединение сразу после приема месседжа. Так работает. Могли бы догадаться по "клинической картине" самостоятельно.
@AMar4enko таймаут здесь чтобы периодически подключаться к серверу. Длительно открытое в ожидании данных соединение, как раз это и хочу реализовать, но в чем ошибка не знаю - данные приходят только после повторного вызова функции getmess
@arcanrun Я вам написал, в чем ошибка, надо просто внимательно прочитать. После того, как вы приняли первое сообщение, подключения более нет (сервер отправляя сообщение его разрывает). Чтобы обработать второе сообщение, надо заново подключиться. Это у вас и происходит при вызове функции getmess. Всё это означает, что вы не понимаете принципа работы long polling, и вам надо его понять, чтобы всё заработало.