2017-01-08 6 views
0

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

Спасибо!

+0

Вы попробовали что-нибудь? Что ты нашел? –

+0

@ Jim Garrison, ну, у меня есть googled, и посмотрел на источник. Но не смог найти определенного ответа. – Ajay

+0

Должно быть довольно легко пройти через код и понять это. Поскольку библиотека реализована с использованием NIO, я ожидаю, что она предоставит оба варианта. –

ответ

2

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

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

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

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

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

Он всегда делает это в любом из режимов.

+0

Спасибо за информацию, я думал, что она будет ждать, потому что я знаю в TCP, в отличие от UDP, она обеспечивает доставку пакетов. – Ajay

+1

@Ajay Он делает это, но это не задерживает приложение при этом. – EJP

+0

Хорошо, спасибо. Это делает ping немного сложнее рассчитать тогда. – Ajay

0

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

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

Это находится из README.MD здесь: https://github.com/TooTallNate/Java-WebSocket

+0

Это действительно не отвечает на вопрос, который вы на самом деле просили. – EJP

+0

@EJP это потому, что речь шла именно об этой библиотеке. – Ajay