Является ли метод отправки Java Websockets асинхронным или ждет?

Я использую библиотеку Java Websockets из https://github.com/TooTallNate/Java-WebSocket. Я хотел бы рассчитать задержку между отправкой сообщений. При использовании функции send(message); будет ли это ждать, пока сервер не получит пакет (поскольку он использует TCP), или он просто завершит метод в своем собственном потоке.

Спасибо!


person Ajay    schedule 08.01.2017    source источник
comment
Вы пробовали что-нибудь? Что ты нашел?   -  person Jim Garrison    schedule 09.01.2017
comment
@ Джим Гаррисон, ну, я погуглил и посмотрел на источник. Но однозначного ответа не нашел.   -  person Ajay    schedule 09.01.2017
comment
Должно быть довольно легко пройтись по коду и понять это. Поскольку библиотека реализована с использованием NIO, я ожидаю, что она предоставит оба варианта.   -  person Jim Garrison    schedule 09.01.2017
comment
@JimGarrison У меня есть и я не вижу никаких доказательств этого, не жду, но хотел бы подтвердить это с кем-то, кто знает наверняка.   -  person Ajay    schedule 09.01.2017


Ответы (2)


При использовании отправки (сообщения); функция, будет ли она ждать, пока сервер не получит метод

Это утверждение даже не имеет смысла. Сервер не получает метод, он получает данные, которые отправляет метод.

(поскольку он использует TCP)

В TCP API нет ничего, что бы ждало получения чего-либо от однорангового узла. Когда вы отправляете данные через TCP, они буферизуются в буфере отправки локального сокета и немедленно возвращаются. Фактические данные отправляются узлу асинхронно по сети. Отправка блокируется, пока буфер отправки заполнен, если базовый сокет находится в режиме блокировки (по умолчанию), в противном случае он либо возвращает короткий код возврата отправки в неблокирующем режиме, либо отправляет какой-либо Future в асинхронном режиме. Ваш вопрос может быть действительно о том, в каком из этих режимов находится базовый сокет или нет.

или он просто завершает метод в своем собственном потоке.

И так всегда в любом режиме.

person user207421    schedule 09.01.2017
comment
Спасибо за информацию, я думал, что это подождет, потому что я знаю, что TCP, в отличие от UDP, гарантирует доставку пакетов. - person Ajay; 09.01.2017
comment
@Ajay Это так, но это не задерживает приложение. - person user207421; 09.01.2017
comment
Хорошо, спасибо. Это усложняет расчет пинга. - person Ajay; 09.01.2017
comment
Кстати, я отредактировал первую цитату в своем вопросе. - person Ajay; 09.01.2017

Оказывается, это

неблокирующая модель, управляемая событиями (аналогично API WebSocket для веб-браузеров).

Это можно найти в README.MD здесь: https://github.com/TooTallNate/Java-WebSocket

person Ajay    schedule 09.01.2017
comment
Это на самом деле не отвечает на вопрос, который вы на самом деле задали. - person user207421; 09.01.2017
comment
@EJP это потому, что вопрос был конкретно об этой библиотеке. - person Ajay; 09.01.2017