Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2011, 18:03
Новичок на форуме
Отправить личное сообщение для max.arshinov Посмотреть профиль Найти все сообщения от max.arshinov
 
Регистрация: 21.01.2011
Сообщений: 6

comet - бесконечный IFRAME
Привет, Илья! Хочу сделать чат с помощью COMET. Транспорт - бесконечный Iframe. Начал с того, что попытался реализовать потоковую передачу:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        iframe{
            width: 500px;
            height: 600px;
        }
    </style>
    <script type="text/javascript" src="http://yandex.st/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var d = $(document.createElement('iframe'));
            d.appendTo('form');
            d.attr('src', '/stream.axd');
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">

    </form>
</body>
</html>


stream.axd - открывает поток и никогда не заканчивается, как только поступает сообщение stream.axd?add=SomeMessage это сообщение выводится в поток вот так:
var i = 0;
            var time = 0;
            ThreadPool.QueueUserWorkItem(new WaitCallback(x =>
            {
                // тут надо будет изредка сбрасывать потоки
                while (true)
                {
                    Thread.Sleep(2000);
                    if (i != chat.Count)
                    {
                        for (var j = i; j < chat.Count; j++)
                        {
                            context.Response.Write(chat[j] + "\n");
                            //context.Response.Write("<script type=\"text/javascript\">\nalert('" + chat[j] + "');\n</script>");
                        }
                        try
                        {
                            context.Response.Flush();
                        }
                        catch (Exception E)
                        {
                            //throw E;
                            ar.Complete(String.Empty, false);
                            break;
                        }
                        i = chat.Count;
                    }
                }
                ar.Complete(String.Empty, false);
            }));

Файрфокс, Опера и AS3 проявили себя хорошо и в IFrame (или UrlStream для AS3) попадают сообщения, а вот ИЕ и ВебКит ничего не выводят, пока документ не загрузится ( Если использовать long pool, то все ок. Но мне надо сделать чат, так что long pool кажется не лучшим решением. Куда копать?

Последний раз редактировалось Илья Кантор, 21.01.2011 в 19:11.
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2011, 19:12
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Попробуй перед посылкой первого сообщения выводить 4кб пробелов. Это как гипотеза.
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2011, 00:00
Новичок на форуме
Отправить личное сообщение для max.arshinov Посмотреть профиль Найти все сообщения от max.arshinov
 
Регистрация: 21.01.2011
Сообщений: 6

Оно работает
А вот еще можно ли раскрыть секрет этой особенной уличной магии?
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2011, 00:09
Новичок на форуме
Отправить личное сообщение для max.arshinov Посмотреть профиль Найти все сообщения от max.arshinov
 
Регистрация: 21.01.2011
Сообщений: 6

Уличная магия не работает с Safari 5.0.3 - win. Я перестал что-либо понимать )
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2011, 00:14
Новичок на форуме
Отправить личное сообщение для max.arshinov Посмотреть профиль Найти все сообщения от max.arshinov
 
Регистрация: 21.01.2011
Сообщений: 6

Еще обнаружено, что в случае открытия 2х вкладок/инстансов файрфокса с таким фреймом грузит он только в один (буферизация?)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery + iframe Fidel jQuery 6 12.10.2013 23:43
Передача параметров javascript между iframe и документом. freedon Events/DOM/Window 8 05.05.2011 16:29
Javascript запрещающий открывать iframe в новом окне. HELP! Андреи Events/DOM/Window 11 26.09.2009 07:36
как можно создать iframe со скриптами GOll Общие вопросы Javascript 2 05.05.2009 11:32
установка позиции курсора или выделения в iframe mister_maxim Events/DOM/Window 5 18.04.2009 10:43