Ilya
Вызвать метод abort так сложно, что это как три этапа
Aleksei
сам то читаешь что кидаешь? я тут три запроса насчитал
Alexey
просто удаляются таски из очереди
Peter
ну то есть три этапа на закрытие это не бесполезно?
так оно один фиг будет закрываться, либо при abort(), либо после завершения обмена данными
Aleksei
и чо
Ilya
Разницу понимаем?
Peter
и чо
то, что при abort() нету никаких накладных расходов по сравнению с игнорированием данных
Ilya
Советую понять, как работает TCP, прежде чем спорить
Kirill
по линке не написано ничего про закрытие соединения
я так понял вот The user agent should cancel any network activity for which the object is responsible
Ilya
Еще лучше
Alexey
я так понял вот The user agent should cancel any network activity for which the object is responsible
ага, там написано про удаление тасков на запросы
Alexey
из очереди
Ilya
Но проще просто формошлепить
Alexey
но ничего про дроп самого соединения
Alexey
так что даже если вы хренанете abort, он отрабатывает только на стороне клиента
Alexey
мне кажется "The user agent should cancel any network activity for which the object is responsible." не подразумевает закрытие соединения
Alexey
хотя, Денис прав
Alexey
надо просто открыть wireshark
Alexey
и поставить точку одним скрином 🙂
Alexey
¯\_(ツ)_/¯
Kirill
В любом случае соединение то по факту закрывается и сервер может это событие отловить, не знаю как на других серваках но на ноде точно
Alexey
может тут найдется кто-нибудь, кому не лень проверить?
Alexey
мне было бы интересно узнать реальный расклад
Alexey
о, было бы здорово
Alexey
узнаю что-нибудь новое сегодня 🙂
Peter
мне кажется "The user agent should cancel any network activity for which the object is responsible." не подразумевает закрытие соединения
там ещё есть про Terminate algoritm, что, кмк, подразумевает то, что ты подчищаешь за собой мусор в виде открытых соединений и прочего
Peter
Alexey
ага, только где про этот алгоритм в 3.6.1?
Peter
ага, только где про этот алгоритм в 3.6.1?
про какой алгоритм? если ты про кидание abort error, то это есть в пункте 3.6.4
Alexey
сорян, 3.6.5 🙂
Alexey
> Cancels any network activity.
Alexey
кстати, там написано "should" (при чем выделено)
Kyrylo
таак
Kyrylo
Я не поленился
Kyrylo
🙂
Alexey
а значит, разные браузеры могут работать по-разному
Alexey
оооо
Alexey
вещай!
Kyrylo
const express = require('express') const app = express() app.get('/', function (req, res) { res.send('Hello World!') }) app.get('/test', function (req, res) { console.log('opened'); req.on('close', err => { console.log('closed'); }) }) app.listen(3000, function () { console.log('Example app listening on port 3000!') })
Kyrylo
var xhr = new XMLHttpRequest(), method = "GET", url = "/test"; xhr.open(method,url,true); xhr.send(); undefined
Kyrylo
xhr.abort();
Kyrylo
Kyrylo
сервер легко узнает об abort
Alexey
ок, получается abort-таки оповещает сервак об отмене
Alexey
закрывая сокет
Alexey
вопрос закрыт 🙂
Kyrylo
получается
Alexey
спасибо за тест 🙂
Alexey
теперь я знаю чуточку больше
Kyrylo
мне самому стало интересно
Alexey
знаешь что ещё интересно )
Aleksei
прикольно, тоже нового узнал)
Ilya
Ну ее же читать надо
Kyrylo
мне просто надо было скоротать 15 мин до 4-20
Peter
они просто допускают ситуацию, что браузер при аборте не рвёт tcp-соединение
Alexey
доверяй, но проверяй
Peter
ну, есть же keep-alive соединения
Peter
про лимиты я упоминал, да
Peter
да и у клиента (браузера) могут быть лимиты
Aleksei
предлагаю тебе в след раз не упоминать какой ты умный, а нормально объяснять если ты хорошо разбираешься в какой то теме
Ilya
У NAT такая же штука
Ilya
То есть в публичном вайфае пул коннекшнов забьется супербыстро
Alexey
кстати
Alexey
тут cancel в фетч подвезли
Alexey
детали в треде https://github.com/whatwg/fetch/issues/447
Aleksei
Так он хорошо объяснил, просто вы его не слушали
вот @iblia хорошо объяснил, а не говорил какие все вокруг тупые. да и ты хорош, вместо того чтобы четко рассказать, сказал что формошлепы и все, чего с них взять
Aleksei
итак без наездов)
Aleksei
я на будущее говорю
Aleksei
Так а что непонятного в объяснении «в доке TCP прописан разрыв соединения»?
ну мне например до сих пор не понятно, что будет если сервак не просто запрос принял, а еще ушел в долгую задачу, то что будет)
Aleksei
камон, я не хочу сейчас перебирать кто что писал)
Aleksei
это конечно если все на потоках/процессах построено)
Peter
тут cancel в фетч подвезли
о, а где почитать, в каком виде в итоге это реализовали?
Aleksei
не, ну вот есть на джаве у тебя сервак, который так же потоки создает, то что будет
Aleksei
ну факт то все равно, что тебе нужно на каждый запрос обрабатывать такую ситуацию