브라우저 대 브라우저 (피어 투 피어) 연결을 어떻게 만들 수 있습니까? [닫은]


84

페이지가로드되면 클라이언트 브라우저간에 직접 tcp / ip 연결을 허용하는 클라이언트 측에서 HTML5 , CSSJavaScript 를 사용하여 웹 사이트를 작성하려면 어떻게해야합니까 ?

사이트에서 한 사용자의 입력이 가능한 한 빨리 다른 사용자에게 전송되어야하므로 클라이언트 A에서 서버로 데이터를 전송 한 다음 클라이언트 B로 데이터를 전송하는 것이 좋지 않기 때문에 지연 시간을 줄이기 위해이 작업을 수행해야합니다. 선택권.

이 주제에 대한 이전 게시물을 읽었지만 찾을 수있는 작업 솔루션 / 예제가 없습니다. 내가 읽은 내용에서 클라이언트 간의 직접 연결은 Silverlight, Java 또는 Flash와 같은 플러그인을 사용하여 만들 수 있습니다.

플러그인이 필요하지 않은 솔루션이 있습니까? JavaScript 만 사용하고 싶습니다.


3
: 신호 서버가없는 한 WebRTC 피어 연결 blog.printf.net/articles/2013/05/17/...
danijar

1
상대적으로 적절한 브라우저 지원을 제공 하는이 분야에서 약간의 견인력을 가진 프로젝트 인 PeerJS 도 참조하십시오 .
보아스

1
가장 간단한 방법은 httprelay.io 및 AJAX 호출 을 사용하는 입니다. 50ms 미만으로 빠릅니다.
Jonas

답변:


126

다음은 Stackoverflow에서 브라우저의 P2P 연결에 대한 몇 가지 주제입니다.

  1. HTML5를 사용하면 웹 앱이 P2P HTTP 연결을 만들 수 있습니까?
  2. 브라우저에서 P2P를 수행하는 데 사용할 수있는 기술은 무엇입니까?
  3. HTML5가 P2P를 지원합니까 (웹 소켓뿐만 아니라)
  4. HTML5 Websocket이 서버 (P2P)를 사용하지 않고 2 개의 클라이언트 (브라우저)를 직접 연결할 수 있습니까?
  5. 웹 브라우저에서 피어 투 피어 연결을 만들 수 있습니까?
  6. 웹 소켓은 p2p (브라우저 대 브라우저) 통신을 허용합니까?
  7. HTML 5 P2P 비디오 가능성?
  8. WebRTC는 아직 모든 브라우저에서 구현됩니까?

대부분의 주제에서 언급했듯이 2008 HTML5 작업 초안에는 "피어 투 피어 연결"섹션이있었습니다.

2009 년 2 월 12 일 W3C 작업 초안 이후 "피어 투 피어 연결"섹션이 사라졌습니다. 그러나이 P2P 연결은 사라지지 않았습니다. WebRTC (실시간 통신) 사양 내에서 PeerConnection이라는 이름으로 돌아 왔습니다.

2011 년 10 월 31 일부터 W3C 편집자 초안은 공식 작업 초안입니다.

PeerConnection (UDP 기반)의 유일한 구현은 Ericsson 랩 (2011 년 5 월)에 의해 수정 된 WebKit에 존재하며, 꽤 잘 작동합니다. 일부 패치는 현재 WebKit에 있습니다 (2011 년 10 월-아래 업데이트 참조!) :

또한 WebRTC 이니셔티브는 Google, Mozilla 및 Opera의 프로젝트입니다. 따라서 그들은 PeerConnection에 대한 사양을 계속하고 있습니다.

아마도 Chrome (WebKit 사용)은 PeerConnection과 함께 WebRTC를 지원하는 최초의 주요 브라우저가 될 것입니다.

2012 년 1 월 18 일부터 Chrome은 WebRTC도 지원합니다 . .NET에서 활성화chrome://flags 하여 Dev 채널 (Windows, OSX, Linux) 및 Canary 빌드 (Windows 및 OSX) 에서 사용할 수 있습니다 . MediaStream비디오 및 오디오 만 지원 하며 여러 데모 로 테스트 할 수 있습니다 . String/ ArrayBuffer/ ... 와 같은 애플리케이션 데이터 전송 은 지금까지 지원되지 않습니다.

2012 년 3 월 16 일 부터 WebRTC Editor 's Draft 는 일반 애플리케이션 데이터 ( , 및 ) 를 보내고 받기 위해 "피어 투 피어 데이터 API" 를 분리합니다 . Chromium은 곧 데이터 API를 구현하려고합니다 (2012 년 4 월 10 일).StringArrayBufferBlob

4 월 3 일, Mozilla 는 Firefox 용 WebRTC에 대한 첫 번째 작업 예제도 발표했습니다 .

DataChannel은 플래그 뒤에 Chrome 버전 25 용으로 계획되어 있으며 Firefox Nightly / Aurora (2012 년 12 월 12 일)에서 테스트 할 수 있습니다.

2018 : DataChannel은 아직 실험 단계이지만 현재 버전의 Chrome 및 Firefox에서 사용할 수 있습니다.


11
2014 년입니다. 최근 진행 상황으로 귀하의 우수한 게시물을 업데이트 할 수 있습니까?
myroslav 2014

1
@myroslav webrtc.org/interop 은 시작하기에 좋은 곳입니다. 이제 Firefox, Chrome 및 Opera는 완전한 지원을 제공하고 추가 어댑터와 상호 운용 할 수 있습니다.
msemelman 2014

1
곧 할게요!
Dennis

2
호주에서 2016 년입니다. 브라우저 피어 투 피어에 대한 최신 링크를 가질 수 있습니까?
가네 Krishnan

1
그래, 그 업데이트는 어때?
obskyr

6

실망시켜야 할 것입니다. 이것은 현재 자바 스크립트로는 불가능합니다. Websocket (및 Socket.IO)은 클라이언트와 서버간에 소켓과 같은 연결을 허용하지만 클라이언트 간에는 연결할 수 없습니다. 귀하의 옵션은 플러그인입니다-Flash, Silverlight, Java 또는 맞춤형입니다.

당신이 할 수있는 일은 socket.io를 사용하고 간단한 프록시 서버를 작성하여 에뮬레이션하는 것입니다.


WebSocket이 두 브라우저간에 직접 p2p를 허용하지 않는다는 것이 확실합니까? "WebSocket은 단일 전송 제어 프로토콜 (TCP) 소켓을 통해 양방향 전이중 통신 채널을 제공하는 기술입니다. 웹 브라우저 및 웹에서 구현되도록 설계되었습니다. 그러나 모든 클라이언트 또는 서버 응용 프로그램에서 사용할 수 있습니다. "
Răzvan Flavius ​​Panda '2011-08-11

5
이 문제는 브라우저를 사용할 수 없거나 LISTEN서버 역할 을 할 수없는 경우 해결 되었습니다. 전이중 방식으로 모든 서버와 통신 할 수 있지만 소비자는 서버가 될 수 없습니다. 또한 가능하다면 방화벽과 관련된 백만 가지 문제에 직면하게됩니다. Emil의 솔루션은 느리지 만 더 잘 작동합니다.
ghayes

기술적으로 웹 소켓은 어디서나 사용할 수 있습니다. 그러나 브라우저에서는 보안 제약으로 인해 이런 일이 발생하지 않습니다. ghayes가 설명했습니다. 또한 일반적으로 서버가 대역폭 용량이 큰 장소에 배치되므로 서버가 100 개의 클라이언트를 잘 처리하고 실제 p2p를 사용하면 사용자 연결이 매우 빠르게 포화되기 때문에이 솔루션이 아마도 더 빠를 것입니다 .
에밀 이바노프

@Emil Ivanov : 당신이 말하는 것은 사실이지만 1to1 연결이라면 더 빨라야합니다.
Răzvan Flavius ​​Panda

3

요즘 대부분의 사용자가 NAT 또는 방화벽 뒤에 있으며 이는 사용자의 컴퓨터에 들어오는 연결을 쉽게 설정할 수 없음을 의미합니다. 따라서 귀하의 아이디어는 (가능한 경우) 일부 경우에만 작동하며 솔루션에 추가 복잡성을 가져옵니다. 따라서 영구적 인 연결이 가능한 클라이언트-서버 시스템 (websockets 또는 socket.io 사용)이 더 나은 옵션입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.