2013-07-21 4 views
2

tcp 소켓 쓰기의 각 단계를 제어하여 대형 이미지 데이터 전송의 서버 측 진행을 알 수 있습니까?node.js http 서버 응답 소켓 쓰기 이벤트?

최악의 경우 주 노드 bin 폴더를 변경하여이 이벤트를 추가하는 방법은 무엇입니까?

마지막으로, 누군가 node.js http tcp 소켓의 최대 길이가 1460 인 이유를 설명 할 수 있습니까? documentation 가입일

+0

질문은 현재 엉망입니다. 3 가지 질문이 있는데, 그 중 하나는 오해 (마지막 질문)를 기반으로 한 것으로 보입니다. 어쩌면 우리에게 몇 가지 코드를 보여줄 수 있습니다. –

답변

0

:

socket.write (데이터 [인코딩], [콜백])

소켓으로 데이터를 송신합니다. 두 번째 매개 변수는 문자열의 경우 인코딩을 지정합니다. 기본값은 UTF8 인코딩입니다.

전체 데이터가 커널 버퍼에 성공적으로 플러시 된 경우 true를 반환합니다. 데이터의 전부 또는 일부가 사용자 메모리에 대기중인 경우 false를 반환합니다. 버퍼가 다시 비어지면 '배수구'가 방출됩니다.

데이터가 인 경우 콜백 매개 변수 (선택 사항)가 실행됩니다. 즉각적이지 않을 수 있습니다.

이벤트 : '드레인'쓰기 버퍼가 비어 될 때 방출 된

. 업로드를 스로틀하기 위해 을 사용할 수 있습니다.

그래서 socket.write()의 반환 값, 당신은 데이터가 플러시되면 콜백이 호출되도록 지정할 수 있습니다, 또는 당신의 "배수"이벤트 핸들러를 등록 할 수 있습니다 :

도 참조 소켓. 이것은 실제로 상대방의 진행 상황을 알려주지는 않지만 실제로 구현 된 서버는 대기열이 가득 차면 적절한 통지를 보내 Node.js 측면에서 이벤트를 트리거합니다.

+0

각 tcp pakage가 보내는만큼 많은 보고서 이벤트를 원합니다. 내가 wireshark에서 보는 것처럼. socket.IO를 사용하여 클라이언트에게 진행 전송을보고 할 것입니다. – user2402622

+0

Node.js에서 소켓을 사용할 때 wireshark보다 훨씬 * 높은 수준에서 작업하고 있습니다. 커널 버퍼링이 있습니다. 따라서 소켓에 대한 각 쓰기마다 하나의 네트워크 패킷을 보낼 필요는 없습니다. –