2014-07-05 3 views
-4

WebSocket 객체를 Websocket을 통해 전달하는 방법은 무엇입니까?소켓을 통해 WebSocket을 전송할 수없는 이유는 무엇입니까?

ws.onOpen.listen((e) { 
    outputMsg('Connected'); 
    WebSocket otherWebSocket = ...; 
    ws.send(otherWebSocket); // does not work 
    }); 
+0

* "작동하지 않습니다"* 대신 어떻게됩니까? 아마도 웹 소켓은 합리적인 방법으로 직렬화 및 직렬화 해제 될 수 없습니다. –

+0

이것은 단지 불가능합니다. 어떤 시점에서 WebSocket은 OS 네이티브 소켓을 래핑하기 때문에 어떤 식 으로든 OS 소켓을 의미있게 직렬화 할 수는 없습니다. – user1937198

+0

나는 그렇게 생각했다. RTC는 개발되지 않습니다. 브라우저 간 연결은 P2P를 잊어 버리는 동안 가능합니다 ... – Dima00782

답변

1

기존 의견에 따르면 웹 소켓과 같은 개체를 직접 직렬화하는 것은 의미가 없습니다. 그러나, 내가 파이썬에서 한 트릭은 일 수 있고이 유용 할 수 있습니다. 이것이 다소 모호한 경우 사과드립니다. 나는 다트를 안다.

트릭에는 WebSocket을 래핑하고 직렬화를 위해 호출되는 메소드가 있습니다. 클래스 생성자는 생성자 매개 변수를 저장해야합니다.

그런 다음 serialization 메서드는 이러한 생성자 매개 변수 및 기타 기존 '상태'데이터 (예 : 웹 소켓에서 아직 읽지 않은 바이트, 키, 클라이언트 ID, 서버 ID 등과 같은 서버와의 대화에 관련된 모든 데이터) 등) 및 닫기 WebSocket.

받는 사람은 이러한 매개 변수를 기반으로 새 WebSocket을 만들고 해당 상태 데이터를 기반으로 서버와의 상호 작용을 재개 할 수 있습니다.

물론 이것은 소켓의 다른 쪽 끝에있는 서버가 소켓의 닫힘과 다시 열림에 협력하고 아무 일도 일어나지 않은 것처럼 계속 수행해야합니다. 서버가 그렇게하지 않으면이 기술은 작동하지 않습니다.

Python code 파일 설명자를 serialize하는 방법을 설명하고 있습니다. 파일의 경로와 이름, 현재 파일 위치, 읽기/쓰기 모드 등을 serialize하는 것뿐입니다. 이렇게하면 직렬화 된 파일의 수신자가 이전과 완전히 동일한 상태로 파일을 다시 열 수 있습니다.

관련 문제