HTML5가 웹 앱이 피어 투 피어 HTTP 연결을 만들 수 있도록 허용합니까?

StackOverflow https://stackoverflow.com/questions/1032006

  •  06-07-2019
  •  | 
  •  

문제

중앙 서버의 도움으로 동일한 웹 앱의 다른 사용자와 직접 연결할 수있는 웹 앱을 만들 수 있습니까? UDP 홀 펀칭과 유사한 프로세스를 상상하고 있습니다.

HTML5의 새로운 WebSockets API에 대해 읽었지만 완전히 이중화 된 연결이 시작되기 전에 WS 호환 서버와의 연결을 시작해야합니다. 나는 서버가 참여하고있는 클라이언트간에 직접 연결하는 프로세스에 대해 Moreso라고 생각하고 있습니다. 초기 악수에서.

참고 : Java 애플릿은 계산되지 않습니다. 표준 브라우저 기술에만 관심이 있습니다.

도움이 되었습니까?

해결책

지능적 인 추측 대신에 정보에 대한 답변이 있습니다.

HTML 5는 JavaScript에서 동료 대 피어 연결을 허용 할 계획이지만 이러한 연결은 원시 TCP가 아닙니다.

완전한 사양은에서 찾을 수 있습니다 http://dev.w3.org/html5/websockets/

JRH

편집 : 피어 대 피어 연결을 구체적으로 참조하면 다음 링크를 확인하십시오.

능력이 여전히 협상되고 있음을 주목하는 것이 중요합니다. "로컬 채팅"웹 앱을 만들 수있어서 좋을 것입니다 :)

JRH

다른 팁

2012 년 10 월 17 일 업데이트 : 이 기능은 이제 Chrome 안정 V22에 존재합니다. Chrome 에서이 기능을 사용하려면 Chrome : // 플래그에서 두 개의 플래그를 활성화해야합니다.

  • 미디어 스트림을 활성화합니다
  • Peerconnection을 활성화합니다

그런 다음 방문 할 수 있습니다 APPTC 데모 페이지 데모를 시험해보십시오. 참조 Webrtc- 데모 실행 Page Peer to Peer 기능을 사용하고 장치 캡처를 활성화하기 위해 Chrome 설정에 대한 자세한 지침은 페이지입니다.


업데이트: Ericcson Labs의 엔지니어는 WebKit 빌드에서 개념 증명을 가지고 있습니다. HTML5 피어에게 동료 대화 비디오.

그들은 기술의 블로그에 시연과 기술의 작동 방식에 대한 다이어그램과 설명을 가지고 있습니다.

그들은이 안정화되고 WebKit 저장소에 헌신하기 위해 노력하고 있습니다.

예, 마침내.

이 글 (2017) 기간 동안 WebRTC는 이제 대부분의 최신 브라우저 (사용중인 사람들의 약 70%)의 표준 부분이며 멀티미디어 스트리밍, 피어 투 피어 및 홀 펀칭을 허용합니다.

WebRTC의 문서, 샘플 코드 및 라이브 예제는 html5rocks.com.

에 따르면 caniuse.com 그리고 html5rocks.com, 다음 브라우저는 WEBRTC를 지원합니다.

전체 지원 : Edge 14, Firefox 22, Firefox Android 55
부분 지원 : Android Browser 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC 브라우저 Android 11.4
향후 지원 (Q3 2017) : iOS 11 용 크롬, iOS 11 용 사파리 11 및 OS X 10.11
지원하지 않습니다: 즉, 모바일, 오페라 미니

Safari 11이 아직 출시되지 않았으며 iOS 11 또는 OS X 10.11이 필요하기 때문에 WEBRTC의 포화 속도는 Apple 장치에서 제한됩니다. 과거 업그레이드 트렌드에서 예상했지만 WEBRTC는 2018 년까지 iOS 기기의 약 75%, 2020 년까지 100%에서 사용할 수 있어야합니다.

이것이 까다로운 이유는 여러 가지가 있습니다.

  1. 방화벽 (평범한 NAT조차도)은 HTTP보다 훨씬 낮은 원형 층에서 이러한 종류의 연결을 어렵게 만듭니다. 내 IT 보안 모자가 켜져 있으면 웹 사이트를 방문하여 기계에서 임의의 포트를 열 수있는 훌륭한 방법처럼 보이므로 거의 모든 회사 IT 시스템에 의해 적극적으로 차단됩니다.
  2. HTTP는 본질적으로 클라이언트 서버 프로토콜입니다. 긴 폴링 (그리고 다른 몇 가지 기술)을 사용하여 이중 통신을 시뮬레이션하는 것은 합리적으로 쉽지만 특히 효율적이지는 않습니다.
  3. 이것은 XSS 공격에 큰 구멍을 열 것입니다.

Websockets는 이러한 문제 중 두 번째 문제를 해결하도록 설계되었지만 다른 두 가지가 아닙니다. HTML5 사양에서 피어 투 피어에 대해 이야기 할 때, 그들은 한 클라이언트와 다른 클라이언트가 아닌 서버와 클라이언트 간의 전체 듀플렉스 통신에 대해 이야기하고 있습니다.

그러나 Websockets 위에 적절한 네트워크 스택을 구현하는 것은 간단합니다. 모든 통신이 서버를 통해 여전히 수행되어야한다는 프로비저이 제공. 나는 긴 폴링을 사용 하여이 일을하는 것을 보았습니다 (Uni의 내 친구는 긴 폴링을 사용하여 전체 TCP/IP 스택을 썼습니다).

I Second Harshath.jr : 서버가 디렉토리 역할을하는 서버를 가질 수 있습니다 (각 연결된 에이전트의 "원래"노출; 원산지는 scheme+host+port에 초안 아바르트-오리진, 계획은 "WS"또는 "WSS")입니다. 그런 다음 피어 투 피어 웹 소켓 연결을 시작할 수 있습니다. 그만큼 예규 감사를 통해 일하고 있습니다 코스. 물론 이것은 각 에이전트 (즉, 브라우저)가 자체 WebSocket 서버 (à la Opera Unite)를 포함시켜야 함을 의미합니다.

그 동안 XMPP/IRC/등을 수행하십시오.-way : 피어 투 피어 연결은 없지만 WebSocket 연결은 중앙 서버 (또는 네트워크!)에 연결하여 연결된 에이전트 (결국 특정 WebSocket을 사용하여 메시지를 전달하십시오.” 하위 프로토콜 ")

편집 :이 모든 것은 실제로 HTML5의 범위를 벗어난다는 점에 유의하십시오 (이 모든 것들은 한때 HTML5의 일부 였지만 자체 사양으로 나뉘 었습니다).

웹 소켓의 전체 아이디어는 방화벽과 프록시의 문제를 해결하는 것이 었습니다. http://www.kaazing.org/confluence/display/kaazing/what+is+ html+ 5+ Websocket

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top