program90
21.01.2012 - 21:30
И еще почему протокол Tcp-ip не закрывает соединение? Http-протокол вроде бы не может закрыть соединение, потому что это просто пакеты с пользовательскими данными. Поэтому соединение закрывает не браузер и не сервер (например, apache), а операционная система, на уровне протокола транспортного уровня (tcp/ip).
Правильно ли это?
caballero
21.01.2012 - 23:05
Цитата |
Там написано, что: |
Этот баг в браузерах в основном пофиксили
Цитата |
И еще почему протокол Tcp-ip не закрывает соединение? |
Что значит не закрывает? От кого?
Цитата |
Http-протокол вроде бы не может закрыть соединение, потому что это просто пакеты с пользовательскими данными. Поэтому соединение закрывает не браузер и не сервер (например, apache), а операционная система, на уровне протокола транспортного уровня (tcp/ip). |
Это написаноо с помощью генератора случайных слов?
Поскольку не ясно что "это" то вряд ли можно сказать правильно оно или нет.
caballero
21.01.2012 - 23:14
На самом деле все просто. HTTP соединение не я вляется постоянным. Поэтому при каждом запросе нужно делать соединеие с сервером а в случае с PHP и прочими скриптовыми язывками подымать интерпретатор. Смысл веб сокетов - установить постоянное соединение. Это соединение позволит кроме снижения нагруки на сервер (аналог - убожество Node.js) дать возможность сереверу посылать данные в браузер по своей инициативе. Например появилась запись в чате - ее отправляем в браузер без всяких запросов страниц аяксов и прочего.
program90
21.01.2012 - 23:24
caballero
Цитата |
Смысл веб сокетов - установить постоянное соединение. Это соединение позволит кроме снижения нагруки на сервер (аналог - убожество Node.js) дать возможность сереверу посылать данные в браузер по своей инициативе. Например появилась запись в чате - ее отправляем в браузер без всяких запросов страниц аяксов и прочего.
|
да я это слышал.
мне было нужно узнать про протокол. написано что есть директива (заголовок) connection keep alive. Так почему ее нельзя поставить равной бесконечности.
Но не это главный вопрос. Не написано развернуто кто закрывает соединение? сам протокол не закрывает соединение. Это должен сделать либо сервер либо браузер, т.е. закрыть сокет (если описывать на самом низком уровне). Но если http делает команду закрыть кому-то из них, то тогда это делает php-скрипт (или может быть apache, получив заголовок) или браузер.
А если это делается на уровне Tcp-ip, то это значит, что библиотека winsock, которая является реализацией стека протоколов tcp/ip, закрывает автоматически соединение
caballero
21.01.2012 - 23:30
Цитата |
есть директива (заголовок) connection keep alive. Так почему ее нельзя поставить равной бесконечности. |
Где есть?
Цитата |
Не написано развернуто кто закрывает соединение? сам протокол не закрывает соединение. |
Разумеется. протокол это не программа. Соединение закрывает сервер когда сочтет необходимым. А скорее всего соединение закрывает браузер.
Цитата |
Но если http делает команду закрыть кому-то из них, то тогда это делает php-скрипт (или может быть apache, получив заголовок) или браузер. |
HTTP ничего никому гне дает а предписывает поведение сервера и браузера. Предписано разорвать соединение после отдачи страницы. А php тут вообще ни при чем.
Цитата |
А если это делается на уровне Tcp-ip, то это значит, что библиотека winsock, которая является реализацией стека протоколов tcp/ip, закрывает автоматически соединение |
Зачем писать лишь бы что нибудь умное написать (накопипастить).
Есть стандарт описывающий HTTP протокол где вообще нет требования что транспортным уровнем должен быть TCP/IP.
program90
21.01.2012 - 23:32
А что тогда про connection: keep-alive? Зачем этот заголовок или его нету?
Странно почему он все время показывается в Фиддлере?
program90
21.01.2012 - 23:33
caballero
такое ощущение что ты не рубишь
caballero
21.01.2012 - 23:40
Цитата |
такое ощущение что ты не рубишь |
Такое ощущение что ты не понимаешь о чем спрашиваешь. HTTP протокол не держит постоянное TCP соединение. Так он устроен. Точка.
Какие там заголовки значения не имеет.
program90
21.01.2012 - 23:56
caballero
Но если этот заголовок есть, то он не просто так?
caballero
22.01.2012 - 00:06
Цитата |
Но если этот заголовок есть, то он не просто так? |
там стопицот заголовков из которых разраба интересует Location и еще пару. Если интересен именно этот по некоей причине - гугл ответит
program90
22.01.2012 - 00:07
Так в google как раз написано, что этот заголовок служит для того, чтобы не разрывать соединение.
caballero
22.01.2012 - 00:15
Цитата |
Так в google как раз написано, что этот заголовок служит для того, чтобы не разрывать соединение. |
Да, но это на усмотрение сервера. Браузер может послать такой заголовок если например он хочет по тому же соединению подтянуть рисунки. Сервер может подождать и не закрывать соединение поканне загрузится весь контент. А моежт и не подождать. Сути дела не меняет.
Вебсокеты - это полноценное TCP соединение причем двусторонее. Сервер сам может установить соединение и отослать браузеру данные.
program90
22.01.2012 - 00:37
http://habrahabr.ru/blogs/nodejs/127525/http://socket.io/#how-to-useВот node.js это технология для сервера, чтобы быстро написать сервер, событийно-ориентированную программу.
А socket.io это реализация сервера websockets? Т.е она подключается либо как
php-библиотека к apache, либо как модуль к node.js? А на локальном компьютере, где
работает браузер, там нужно подключить файл scriptio.js, который
работает во всех версиях всех браузеров? Т.е. даже в Internet explorer 6?
А без подключения
javascript-библиотеки, объекты и функции websockets можно будет использовать только как часть html5? Т.е. в тех браузерах, которые поддерживают html-5?
caballero
22.01.2012 - 00:52
Цитата |
Вот node.js это технология для сервера, чтобы быстро написать сервер, событийно-ориентированную программу |
Это и есть сервер
Цитата |
А socket.io это реализация сервера websockets? |
Скажем так это библиотека которая поддерживает несколько протоколов в том числе и вебсокет.
Цитата |
.е она подключается либо как php-библиотека к apache, либо как модуль к node.js? |
это яваскриптовая библиотека. К ноде подключается к PHP апач - врядли
Цитата |
А на локальном компьютере, где работает браузер, там нужно подключить файл scriptio.js, который работает во всех версиях всех браузеров? Т.е. даже в Internet explorer 6? А без подключения javascript-библиотеки, объекты и функции websockets можно будет использовать только как часть html5? Т.е. в тех браузерах, которые поддерживают html-5? |
Браузер должен поддерживать вебсокеты (и сервер кстати тоже). Либо на нем должен быть флеш который умеет работать по сокетам.Подтянуть какой либо ява скрипт не проблема обычным образом.
killer8080
22.01.2012 - 01:07
Цитата (caballero @ 21.01.2012 - 22:15) |
Вебсокеты - это полноценное TCP соединение причем двусторонее. |
Не надо все мешать в одну кучу. TCP - это транспортный уровень модели OSI, HTTP прикладной уровень соответственно. Вебсокеты - это расширение протокола http, называть его чистым tcp, это как минимум некорректно.
Цитата (caballero @ 21.01.2012 - 22:15) |
Сервер сам может установить соединение и отослать браузеру данные. |
Бред. Соединение может устанавливать только клиент, в этом суть клиент - серверной архитектуры. Вебсокеты позволяют серверу только инициировать передачу клиенту, по уже установленному соединению.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.