Bitcoin Forum
June 17, 2024, 07:41:19 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Одноранговая сеть на базе WebRTC  (Read 492 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 03, 2020, 07:51:01 PM
 #21


метод по ссылке работает исключительно на локальной машине,
Нет. Метод по ссылке работает не только на локальной машине. Не работает он только если кто-то из клиентов подключен через VPN

там написано "In a real-world application, you would never do this".

В переводе это означает: в реале вы так никогда делать не будете.
То есть имеется в виду, что в реальном применении вы не будете обмениваться сигнальными данными через CTRL+C и CTRL+V, а вместо этого будете использовать веб сокеты с сигнальным сервером или голубинную почту.

OpenTrade - Open Source Cryptocurrency Exchange
iddqdidkfa
Hero Member
*****
Offline Offline

Activity: 1484
Merit: 505


View Profile
January 04, 2020, 03:16:32 PM
 #22


Да, такая идея тоже имеет место быть. Даже знаю парней, которые сделали такой браузер https://github.com/Zigridar/blockchainsites
Это приложение которое подключается к тестовой сети биткоина и позволяет публиковать сайты не в интернет, а прямо в блокчейн. Там же встроенный браузер (на движке хромиум) который эти сайты может открывать так же как любые другие сайты в интернете.

А вот эта тема очень интересная. Получается, что можно сделать сайт и заплатив за первичное размещение больше не беспокоится о продлении домена, оплате хостеру. Т.е. он будет в интернете навечно. Думаю, что когда народ просечет эту фишку, то все сайты потихоньку туда и переместятся.

Может я не совсем врубился, но какой толк от того что вы сохраните статический контент сайта в блокчейне один раз в момент запуска сайта? Любое последующее обновление и добавление контента обойдется дороже чем плата за хостинг.
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
January 04, 2020, 03:27:37 PM
 #23


метод по ссылке работает исключительно на локальной машине,
Нет. Метод по ссылке работает не только на локальной машине. Не работает он только если кто-то из клиентов подключен через 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 Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 04, 2020, 04:08:38 PM
 #24

В одноранговой сети не должно быть выделенных серверов. Браузер умеет открывать порт, умеет получать на этот порт данные, умеет отправлять данные. Этого достаточно для построения одноранговой сети.
С NAT все работает прекрасно! Во всяком случае не хуже чем в тех же условиях работает любая другая p2p сеть.

OpenTrade - Open Source Cryptocurrency Exchange
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
January 04, 2020, 07:35:29 PM
Merited by Symmetrick (1)
 #25

Я уже приводил ссылку, приведу еще раз https://www.npmjs.com/package/simple-peer

Да, это действительно работает.
Сделал, кому интересно для тестов:
http://ts.0xbt.net/sp/index.html
Причем работает и в Base64:
Code:
data:text/html;base64,PGh0bWw+CiAgPGJvZHk+CiAgICA8c3R5bGU+CiAgICAgICNvdXRnb2luZyB7CiAgICAgICAgd2lkdGg6IDYwMHB4OwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICB9CiAgICA8L3N0eWxlPiAKICAgIDxmb3JtPgogICAgICA8dGV4dGFyZWEgaWQ9ImluY29taW5nIj48L3RleHRhcmVhPgogICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+c3VibWl0PC9idXR0b24+CiAgICA8L2Zvcm0+CiAgICA8cHJlIGlkPSJvdXRnb2luZyI+PC9wcmU+CiAgICA8c2NyaXB0IHNyYz0iaHR0cDovL3RzLjB4YnQubmV0L3NwL3NpbXBsZXBlZXIubWluLmpzIj48L3NjcmlwdD4gCiAgICA8c2NyaXB0PgogICAgICBjb25zdCBwID0gbmV3IFNpbXBsZVBlZXIoewogICAgICAgIGluaXRpYXRvcjogbG9jYXRpb24uaGFzaCA9PT0gJyMxJywKICAgICAgICB0cmlja2xlOiBmYWxzZQogICAgICB9KQogCiAgICAgIHAub24oJ2Vycm9yJywgZXJyID0+IGNvbnNvbGUubG9nKCdlcnJvcicsIGVycikpCiAKICAgICAgcC5vbignc2lnbmFsJywgZGF0YSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ1NJR05BTCcsIEpTT04uc3RyaW5naWZ5KGRhdGEpKQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNvdXRnb2luZycpLnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSkKICAgICAgfSkKIAogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtJykuYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZXYgPT4gewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCkKICAgICAgICBwLnNpZ25hbChKU09OLnBhcnNlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbmNvbWluZycpLnZhbHVlKSkKICAgICAgfSkKIAogICAgICBwLm9uKCdjb25uZWN0JywgKCkgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdDT05ORUNUJykKICAgICAgICBwLnNlbmQoJ3doYXRldmVyJyArIE1hdGgucmFuZG9tKCkpCiAgICAgIH0pCiAKICAgICAgcC5vbignZGF0YScsIGRhdGEgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdkYXRhOiAnICsgZGF0YSkKICAgICAgfSkKICAgIDwvc2NyaXB0PiAKICA8L2JvZHk+CjwvaHRtbD4=
Подставив к коду #1, так же работает.

Так что можно принять за точку отсчета.

fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
January 10, 2020, 03:54:59 PM
 #26

В одноранговой сети не должно быть выделенных серверов.

Потому её клиенты и должны выполнять роль сервера, а они не умеют в данном случае.

Браузер умеет открывать порт, умеет получать на этот порт данные, умеет отправлять данные. Этого достаточно для построения одноранговой сети.

Умеет, но только по запросу своего пользователя.

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 12, 2020, 04:20:01 PM
 #27

Умеет, но только по запросу своего пользователя.

Так же как и любое другое приложение.
Только в обычном сервере открывается один порт и один раз - при старте. На этот единственный порт сервер принимает все входящие соединения.

В случае WebRTC порт открывается каждый раз новый и поэтому необходима более сложная система сигнализации.

То есть можно открыть заранее 100 портов и послать через сигнальный сервер информацию об этих открытых портах всем остальным нодам.
Другие ноды могут хранить эту информацию в кэше и передавать другим нодам через уже открытые соединения, в обход сигнального сервера.

OpenTrade - Open Source Cryptocurrency Exchange
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
January 14, 2020, 07:38:59 AM
 #28

Умеет, но только по запросу своего пользователя.

Так же как и любое другое приложение.
Только в обычном сервере открывается один порт и один раз - при старте. На этот единственный порт сервер принимает все входящие соединения.

В случае WebRTC порт открывается каждый раз новый и поэтому необходима более сложная система сигнализации.

То есть можно открыть заранее 100 портов и послать через сигнальный сервер информацию об этих открытых портах всем остальным нодам.
Другие ноды могут хранить эту информацию в кэше и передавать другим нодам через уже открытые соединения, в обход сигнального сервера.


Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются, даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.

Что значит открыть заранее?

kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 14, 2020, 11:46:59 AM
 #29


Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов.

даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.

А вот этого я не знал.
Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке.

OpenTrade - Open Source Cryptocurrency Exchange
globreserve
Member
**
Offline Offline

Activity: 126
Merit: 23


View Profile
January 14, 2020, 11:54:47 AM
 #30


Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов.

даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.

А вот этого я не знал.
Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке.
Или просто восстанавливать состояние из базы кеша браузера.
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
January 14, 2020, 11:57:48 AM
 #31

Или просто восстанавливать состояние из базы кеша браузера.

Думаю все не так просто.
Браузер открывает порты по своему усмотрению. Заставить его открыть определенный порт - невозможно.
Поэтому если он в одной сессии открыл 10 портов: 1,2,3,4,5...10, то в другой сессии он уже откроет другие порты и ничего с этим нельзя сделать.

OpenTrade - Open Source Cryptocurrency Exchange
globreserve
Member
**
Offline Offline

Activity: 126
Merit: 23


View Profile
January 14, 2020, 12:30:28 PM
 #32

Или просто восстанавливать состояние из базы кеша браузера.
Думаю все не так просто. Браузер открывает порты по своему усмотрению. Заставить его открыть определенный порт - невозможно.
Поэтому если он в одной сессии открыл 10 портов: 1,2,3,4,5...10, то в другой сессии он уже откроет другие порты и ничего с этим нельзя сделать.

Угу. Повторный опрос сигнальных серверов, переконнект всей сетки со всеми NAT и прочими замутами.
Поэтому когда я делал мессенджер на вебртс, я плюнул на все и сделал таки на амазоновском IoT.
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
January 14, 2020, 02:52:37 PM
 #33


Нет, не так же. Любое полноценное p2p приложение открывает порт при запуске, держит его открытым и отвечает на запросы независимо от фокуса пользователя, а браузер так не умеет. Ты открыл вкладку, в ней запустилось твоё приложение, открылись порты. Если вкладку закрыть, то приложение и порты закроются,
То есть вкладке это и есть аналог приложения. Есть вкладка(приложение) - есть порты, нет вкладки(приложения) - нет портов.

Только на уровне браузера со всеми вытекающими зависимостями и ограничениями, на уровне ОС твоего приложения не существует.

даже если её не закрывать, а открыть другую, вкладка с твоим приложением уснёт и перестанет отвечать на внешние запросы.

А вот этого я не знал.
Если так, тогда надо предупреждать пользователей просто, что открывать приложение надо в отдельном окне, а не во вкладке.

Это костыль и не факт что поможет. Деление на окна и вкладки весьма условное - браузер из родительского процесса замедляет или вовсе приостанавливает всё что не в фокусе пользователя.

Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!