kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 03, 2020, 07:51:01 PM |
|
метод по ссылке работает исключительно на локальной машине,
Нет. Метод по ссылке работает не только на локальной машине. Не работает он только если кто-то из клиентов подключен через VPN там написано "In a real-world application, you would never do this".
В переводе это означает: в реале вы так никогда делать не будете. То есть имеется в виду, что в реальном применении вы не будете обмениваться сигнальными данными через CTRL+C и CTRL+V, а вместо этого будете использовать веб сокеты с сигнальным сервером или голубинную почту.
|
|
|
|
iddqdidkfa
|
|
January 04, 2020, 03:16:32 PM |
|
Да, такая идея тоже имеет место быть. Даже знаю парней, которые сделали такой браузер https://github.com/Zigridar/blockchainsitesЭто приложение которое подключается к тестовой сети биткоина и позволяет публиковать сайты не в интернет, а прямо в блокчейн. Там же встроенный браузер (на движке хромиум) который эти сайты может открывать так же как любые другие сайты в интернете. А вот эта тема очень интересная. Получается, что можно сделать сайт и заплатив за первичное размещение больше не беспокоится о продлении домена, оплате хостеру. Т.е. он будет в интернете навечно. Думаю, что когда народ просечет эту фишку, то все сайты потихоньку туда и переместятся. Может я не совсем врубился, но какой толк от того что вы сохраните статический контент сайта в блокчейне один раз в момент запуска сайта? Любое последующее обновление и добавление контента обойдется дороже чем плата за хостинг.
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
January 04, 2020, 03:27:37 PM |
|
метод по ссылке работает исключительно на локальной машине,
Нет. Метод по ссылке работает не только на локальной машине. Не работает он только если кто-то из клиентов подключен через VPN там написано "In a real-world application, you would never do this".
В переводе это означает: в реале вы так никогда делать не будете. То есть имеется в виду, что в реальном применении вы не будете обмениваться сигнальными данными через CTRL+C и CTRL+V, а вместо этого будете использовать веб сокеты с сигнальным сервером или голубинную почту. Я проглядел что там ещё CTRL+C и CTRL+V нужны, думал что-то попроще придумали. Значит без помощи пользователя не работает и на локальной машине. Вангую за NAT будет так же сложно как за VPN, а NAT очень распространённая штука. В любом случае, сервером браузер быть не умеет, поэтому неактуально подбирать костыли.
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 04, 2020, 04:08:38 PM |
|
В одноранговой сети не должно быть выделенных серверов. Браузер умеет открывать порт, умеет получать на этот порт данные, умеет отправлять данные. Этого достаточно для построения одноранговой сети. С NAT все работает прекрасно! Во всяком случае не хуже чем в тех же условиях работает любая другая p2p сеть.
|
|
|
|
bomj
|
|
January 04, 2020, 07:35:29 PM Merited by Symmetrick (1) |
|
Да, это действительно работает. Сделал, кому интересно для тестов: http://ts.0xbt.net/sp/index.htmlПричем работает и в Base64: data:text/html;base64,PGh0bWw+CiAgPGJvZHk+CiAgICA8c3R5bGU+CiAgICAgICNvdXRnb2luZyB7CiAgICAgICAgd2lkdGg6IDYwMHB4OwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICB9CiAgICA8L3N0eWxlPiAKICAgIDxmb3JtPgogICAgICA8dGV4dGFyZWEgaWQ9ImluY29taW5nIj48L3RleHRhcmVhPgogICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+c3VibWl0PC9idXR0b24+CiAgICA8L2Zvcm0+CiAgICA8cHJlIGlkPSJvdXRnb2luZyI+PC9wcmU+CiAgICA8c2NyaXB0IHNyYz0iaHR0cDovL3RzLjB4YnQubmV0L3NwL3NpbXBsZXBlZXIubWluLmpzIj48L3NjcmlwdD4gCiAgICA8c2NyaXB0PgogICAgICBjb25zdCBwID0gbmV3IFNpbXBsZVBlZXIoewogICAgICAgIGluaXRpYXRvcjogbG9jYXRpb24uaGFzaCA9PT0gJyMxJywKICAgICAgICB0cmlja2xlOiBmYWxzZQogICAgICB9KQogCiAgICAgIHAub24oJ2Vycm9yJywgZXJyID0+IGNvbnNvbGUubG9nKCdlcnJvcicsIGVycikpCiAKICAgICAgcC5vbignc2lnbmFsJywgZGF0YSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ1NJR05BTCcsIEpTT04uc3RyaW5naWZ5KGRhdGEpKQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNvdXRnb2luZycpLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSkKICAgICAgfSkKIAogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtJykuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZXYgPT4gewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCkKICAgICAgICBwLnNpZ25hbChKU09OLnBhcnNlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbmNvbWluZycpLnZhbHVlKSkKICAgICAgfSkKIAogICAgICBwLm9uKCdjb25uZWN0JywgKCkgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdDT05ORUNUJykKICAgICAgICBwLnNlbmQoJ3doYXRldmVyJyArIE1hdGgucmFuZG9tKCkpCiAgICAgIH0pCiAKICAgICAgcC5vbignZGF0YScsIGRhdGEgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdkYXRhOiAnICsgZGF0YSkKICAgICAgfSkKICAgIDwvc2NyaXB0PiAKICA8L2JvZHk+CjwvaHRtbD4= Подставив к коду #1, так же работает. Так что можно принять за точку отсчета.
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
January 10, 2020, 03:54:59 PM |
|
В одноранговой сети не должно быть выделенных серверов. Потому её клиенты и должны выполнять роль сервера, а они не умеют в данном случае. Браузер умеет открывать порт, умеет получать на этот порт данные, умеет отправлять данные. Этого достаточно для построения одноранговой сети.
Умеет, но только по запросу своего пользователя.
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 12, 2020, 04:20:01 PM |
|
Умеет, но только по запросу своего пользователя.
Так же как и любое другое приложение. Только в обычном сервере открывается один порт и один раз - при старте. На этот единственный порт сервер принимает все входящие соединения. В случае WebRTC порт открывается каждый раз новый и поэтому необходима более сложная система сигнализации. То есть можно открыть заранее 100 портов и послать через сигнальный сервер информацию об этих открытых портах всем остальным нодам. Другие ноды могут хранить эту информацию в кэше и передавать другим нодам через уже открытые соединения, в обход сигнального сервера.
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
January 14, 2020, 07:38:59 AM |
|
Умеет, но только по запросу своего пользователя.
Так же как и любое другое приложение. Только в обычном сервере открывается один порт и один раз - при старте. На этот единственный порт сервер принимает все входящие соединения. В случае WebRTC порт открывается каждый раз новый и поэтому необходима более сложная система сигнализации. То есть можно открыть заранее 100 портов и послать через сигнальный сервер информацию об этих открытых портах всем остальным нодам. Другие ноды могут хранить эту информацию в кэше и передавать другим нодам через уже открытые соединения, в обход сигнального сервера. Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются, даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы. Что значит открыть заранее?
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 14, 2020, 11:46:59 AM |
|
Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов. даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.
А вот этого я не знал. Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке.
|
|
|
|
globreserve
Member
Offline
Activity: 126
Merit: 23
|
|
January 14, 2020, 11:54:47 AM |
|
Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов. даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.
А вот этого я не знал. Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке. Или просто восстанавливать состояние из базы кеша браузера.
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
January 14, 2020, 11:57:48 AM |
|
Или просто восстанавливать состояние из базы кеша браузера.
Думаю все не так просто. Браузер открывает порты по своему усмотрению. Заставить его открыть определенный порт - невозможно. Поэтому если он в одной сессии открыл 10 портов: 1,2,3,4,5...10, то в другой сессии он уже откроет другие порты и ничего с этим нельзя сделать.
|
|
|
|
globreserve
Member
Offline
Activity: 126
Merit: 23
|
|
January 14, 2020, 12:30:28 PM |
|
Или просто восстанавливать состояние из базы кеша браузера.
Думаю все не так просто. Браузер открывает порты по своему усмотрению. Заставить его открыть определенный порт - невозможно. Поэтому если он в одной сессии открыл 10 портов: 1,2,3,4,5...10, то в другой сессии он уже откроет другие порты и ничего с этим нельзя сделать. Угу. Повторный опрос сигнальных серверов, переконнект всей сетки со всеми NAT и прочими замутами. Поэтому когда я делал мессенджер на вебртс, я плюнул на все и сделал таки на амазоновском IoT.
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
January 14, 2020, 02:52:37 PM |
|
Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов. Только на уровне браузера со всеми вытекающими зависимостями и ограничениями, на уровне ОС твоего приложения не существует. даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.
А вот этого я не знал. Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке. Это костыль и не факт что поможет. Деление на окна и вкладки весьма условное - браузер из родительского процесса замедляет или вовсе приостанавливает всё что не в фокусе пользователя.
|
|
|
|
|