2017-01-08 6 views
0

https://github.com/TooTallNate/Java-WebSocket에서 Java Websockets 라이브러리를 사용하고 있습니다. 나는 메시지를 보내는 사이의 대기 시간을 계산하고 싶다. send(message); 함수를 사용할 때, 서버가 TCP를 사용하기 때문에 패킷을받을 때까지 기다리거나, 자신의 스레드에서 메소드를 끝내기 만 할 것입니다.Java Websockets가 비동기식 메소드를 전송합니까? 아니면 대기 중입니까?

감사합니다!

+0

시도 했습니까? 뭘 찾았 니? –

+0

@ 짐 개리슨, 나는 봤 거든, 근원을 보았다. 그러나 확실한 답을 찾을 수 없었습니다. – Ajay

+0

코드를 단계별로 실행하여 쉽게 이해할 수 있습니다. 라이브러리는 NIO를 사용하여 구현되었으므로 두 옵션을 모두 제공 할 것으로 기대됩니다. –

답변

2

보내기 (메시지)를 사용하여; 함수는 서버가 메소드를 수신 할 때까지 기다린다.

이 문장은 의미가 없다. 서버가 메서드를받지 못하면 메서드에서 보내는 데이터를받습니다. 피어 아무것도받을 기다리는 TCP API의 아무것도 없다

(그것을 사용하기 때문에 TCP)

. TCP를 통해 데이터를 보내면 로컬 소켓 송신 버퍼에 버퍼되며 즉시 반환됩니다. 실제 데이터는 네트워크를 통해 피어에게 비동기 적으로 전송됩니다. 기본 소켓이 블로킹 모드 (기본값) 인 경우 보내기 버퍼가 가득 차는 동안 블록을 보내고, 그렇지 않으면 비 블로킹 모드에서 짧은 보내기 리턴 코드를 반환하거나 비동기 모드에서 Future을 게시합니다. 귀하의 질문은 실제로 기본 소켓이 있거나없는 모드에 대한 것일 수 있습니다.

또는 방금 자체 스레드에서 메서드를 마칩니다.

항상 모든 모드에서 해당 값을 사용합니다.

+0

정보를 주셔서 감사합니다. 나는 그것이 TCP에서 알기 때문에 기다릴 것이라고 생각했습니다. UDP와는 달리, 패킷이 배달되는지 확인합니다. – Ajay

+1

@Ajay 그렇게 하긴하지만 응용 프로그램이 지연되지는 않습니다. – EJP

+0

알겠습니다. 감사합니다. 따라서 ping을 계산하기가 조금 더 어려워집니다. – Ajay

0

는 (웹 브라우저의 웹 소켓 API 유사)

비 차단 이벤트 구동 모델입니다 밝혀졌습니다.

여기 README.MD에서 발견된다 : https://github.com/TooTallNate/Java-WebSocket

+0

그건 당신이 실제로 물어 본 질문에 정말로 답하지 않습니다. – EJP

+0

@EJP 그것은 특별히이 라이브러리에 관한 질문 이었기 때문입니다. – Ajay