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

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

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

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

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



답변

다음은 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에서 사용할 수 있습니다.


답변

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

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


답변

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


답변