Как я могу написать веб-сайт с использованием HTML5 , CSS и JavaScript на стороне клиента, который позволит прямое соединение TCP / IP между клиентскими браузерами после загрузки страницы .
Мне нужно сделать это, чтобы уменьшить задержку, поскольку сайт потребует, чтобы ввод от одного из пользователей был передан другому пользователю как можно скорее, поэтому отправка данных с клиента A на сервер, а затем на клиент B не является хорошей вариант.
Я читал предыдущие сообщения по этой теме, но не было доступных рабочих решений / примеров, которые я мог бы найти. Из того, что я читал, прямое соединение между клиентами может быть установлено с помощью таких плагинов, как Silverlight, Java или Flash.
Есть ли какое-то решение, для которого не требуются плагины? Я хотел бы использовать только JavaScript.
Ответы:
Здесь, в Stackoverflow, есть несколько тем о P2P-соединениях в браузерах:
Как упоминалось в большинстве тем, в обоих рабочих черновиках HTML5 2008 г. был раздел «Одноранговые соединения»:
Начиная с рабочего проекта W3C от 12 февраля 2009 года, раздел «Одноранговые соединения» исчез. Но это P2P-соединение никуда не делось. Он вернулся под названием PeerConnection в спецификации WebRTC (Real-Time Communications):
С 31 октября 2011 года черновик редактора W3C является официальным рабочим проектом:
Единственная реализация PeerConnection (на основе UDP) существует в модифицированном WebKit лабораториями Ericsson (май 2011 г.), который работает достаточно хорошо. Некоторые исправления уже есть в WebKit (октябрь 2011 г. - см. Обновления ниже!):
Кроме того, инициатива WebRTC - это проект Google, Mozilla и Opera. Таким образом, они продолжают спецификацию PeerConnection:
Вероятно, Chrome (использует WebKit) будет первым крупным браузером, поддерживающим WebRTC с PeerConnection:
С 18 января 2012 года Chrome также поддерживает WebRTC . Его можно использовать в канале разработки (Windows, OSX, Linux) и в сборке Canary (Windows и OSX) , включив его в
chrome://flags
. Он поддерживает толькоMediaStream
видео и аудио и может быть протестирован с несколькими демонстрациями . Перенос данных приложения, напримерString
/ArrayBuffer
/ ..., до сих пор не поддерживается.С 16 марта 2012 г. черновик редактора WebRTC разделяет «API одноранговых данных» для отправки и получения общих данных приложения (
String
,ArrayBuffer
иBlob
). Chromium планирует реализовать API данных в ближайшее время (10 апреля 2012 г.).3 апреля Mozilla опубликовала первый рабочий пример WebRTC и для Firefox .
DataChannel планируется для версии 25 Chrome, за флагом, между тем он может быть протестирован в Firefox Nightly / Aurora (12 декабря 2012 г.):
2018: DataChannels все еще экспериментальны, но доступны в текущих версиях Chrome и Firefox:
источник
Придется вас разочаровать - в настоящее время это невозможно с использованием только JavaScript. Веб-сокеты (и Socket.IO) допускают соединение типа сокета между клиентом и сервером, но не между клиентами. Ваш вариант - плагин - будь то Flash, Silverlight, Java или индивидуальный.
Что вы можете сделать, так это использовать socket.io и эмулировать это, написав простой прокси-сервер.
источник
LISTEN
/ работать в качестве сервера. Вы сможете общаться с любым сервером в полнодуплексном режиме, но ваши потребители не могут стать серверами. Вдобавок вы столкнетесь с миллионом проблем с брандмауэрами, если сможете. Решение Эмиля сработает лучше, хотя и медленнее.Я хотел бы обратить ваше внимание на тот факт, что большинство пользователей в настоящее время находятся за NAT или межсетевыми экранами, а это означает, что вы не можете легко установить входящее соединение с компьютером пользователя. Таким образом, ваша идея (если вообще возможно) будет работать только в некоторых случаях и внесет дополнительную сложность в ваше решение. Таким образом, система клиент-сервер с возможным постоянным подключением (с использованием веб-сокетов или socket.io) является лучшим вариантом.
источник