2014-11-26 4 views

답변

2

예, WebSocket.send() 이후에 버퍼를 수정하는 것이 안전합니다. 데이터가 즉시 전송되거나 별도의 버퍼에 복사하거나 있도록 working draft of the WebSocket specification

소켓을위한 별도의 버퍼를 지칭한다.

send (data) 메소드는 연결을 사용하여 데이터를 전송합니다. readyState 특성이 CONNECTING이면 INVALID_STATE_ERR 예외를 발생시켜야합니다. 데이터 인수에 지원되지 않은 대리자가 있으면 은 SYNTAX_ERR을 발생시켜야합니다. 연결이 설정되고 문자열에 짝이없는 대리 사료가 없으면 사용자 에이전트는 웹 소켓을 사용하여 데이터를 보내야합니다. 데이터를 전송할 수없는 경우 (예 : 버퍼가 필요하지만 버퍼가 꽉 찼기 때문에 사용자 에이전트는 웹 소켓 연결을 닫아야합니다. 연결이 닫혀있는 경우는 false 연결이 계속 설립 (데이터가 대기 또는 성공적으로 보냈습니다), 또는 경우 방법은 다음 true를 반환해야한다 (예를 들면에게 사용자 에이전트는 버퍼 오버 플로우를 가지고 데이터를 전송하지 못했기 때문에).

소켓 버퍼가 가득 차면 오류 조건이 발생하고 소켓이 닫힙니다.

는 또한,이보기의 구현 관점에서 이해된다. 바이트가 실제로 네트워크를 통해 전송되는 정확하게 할 때 소켓 구현의 세부 사항이며, 따라서 그들은 그것이 설계 (안전한 프로그래밍 연습을 보내기 전에 데이터에 대한 제어를 유지하기 위해 자신의 버퍼에 바이트를 복사해야 이처럼). 그렇지 않으면, 호출 코드에 의해 버퍼의 resue와 끔찍한 타이밍 문제가있을 수 있습니다.