[javascript] 브라우저 대 브라우저 (피어 투 피어) 연결을 어떻게 만들 수 있습니까? [닫은]
페이지가로드되면 클라이언트 브라우저간에 직접 tcp / ip 연결을 허용하는 클라이언트 측에서 HTML5 , CSS 및 JavaScript 를 사용하여 웹 사이트를 작성하려면 어떻게해야합니까 ?
사이트에서 한 사용자의 입력이 가능한 한 빨리 다른 사용자에게 전송되어야하므로 클라이언트 A에서 서버로 데이터를 전송 한 다음 클라이언트 B로 데이터를 전송하는 것이 좋지 않기 때문에 지연 시간을 줄이기 위해이 작업을 수행해야합니다. 선택권.
이 주제에 대한 이전 게시물을 읽었지만 찾을 수있는 작업 솔루션 / 예제가 없습니다. 내가 읽은 내용에서 클라이언트 간의 직접 연결은 Silverlight, Java 또는 Flash와 같은 플러그인을 사용하여 만들 수 있습니다.
플러그인이 필요하지 않은 솔루션이 있습니까? JavaScript 만 사용하고 싶습니다.
답변
다음은 Stackoverflow에서 브라우저의 P2P 연결에 대한 몇 가지 주제입니다.
- HTML5를 사용하면 웹 앱이 P2P HTTP 연결을 만들 수 있습니까?
- 브라우저에서 P2P를 수행하는 데 사용할 수있는 기술은 무엇입니까?
- HTML5가 P2P를 지원합니까 (웹 소켓뿐만 아니라)
- HTML5 Websocket이 서버 (P2P)를 사용하지 않고 2 개의 클라이언트 (브라우저)를 직접 연결할 수 있습니까?
- 웹 브라우저에서 피어 투 피어 연결을 만들 수 있습니까?
- 웹 소켓은 p2p (브라우저 대 브라우저) 통신을 허용합니까?
- HTML 5 P2P 비디오 가능성?
- WebRTC는 아직 모든 브라우저에서 구현됩니까?
대부분의 주제에서 언급했듯이 2008 HTML5 작업 초안에는 “피어 투 피어 연결”섹션이있었습니다.
- http://www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
- http://www.w3.org/TR/2008/WD-html5-20080610/comms.html#peer-to-peer
2009 년 2 월 12 일 W3C 작업 초안 이후 “피어 투 피어 연결”섹션이 사라졌습니다. 그러나이 P2P 연결은 사라지지 않았습니다. WebRTC (실시간 통신) 사양 내에서 PeerConnection이라는 이름으로 돌아 왔습니다.
- http://dev.w3.org/2011/webrtc/editor/webrtc.html#peerconnection(W3C 편집자 초안)
- http://www.whatwg.org/specs/web-apps/current-work/webrtc.html#peerconnection ( 제 5 회 2011 년 12 월 W3C 편집자 초안에 전달하기 때문에 )
2011 년 10 월 31 일부터 W3C 편집자 초안은 공식 작업 초안입니다.
PeerConnection (UDP 기반)의 유일한 구현은 Ericsson 랩 (2011 년 5 월)에 의해 수정 된 WebKit에 존재하며, 꽤 잘 작동합니다. 일부 패치는 현재 WebKit에 있습니다 (2011 년 10 월-아래 업데이트 참조!) :
- https://labs.ericsson.com/apis/web-real-time-communication/
- https://labs.ericsson.com/developer-community/blog/update-webkit-contributions
또한 WebRTC 이니셔티브는 Google, Mozilla 및 Opera의 프로젝트입니다. 따라서 그들은 PeerConnection에 대한 사양을 계속하고 있습니다.
아마도 Chrome (WebKit 사용)은 PeerConnection과 함께 WebRTC를 지원하는 최초의 주요 브라우저가 될 것입니다.
- http://www.webrtc.org/blog/firststeptowardchromeintegration
- http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/95bf1e2e1de852fc
- https://lists.webkit.org/pipermail/webkit-dev/2011-November/018445.html
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 일).String
ArrayBuffer
Blob
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 사용)이 더 나은 옵션입니다.