2013-06-26 3 views
0

Я использую socket.io-java-client для подключения моего класса java на стороне сервера к node.js и испускания некоторых событий.Как отключить сокет после завершения работы socket.emit

Поскольку я запускаю это на сервере, я не хочу, чтобы поток сокетов работал всегда.

Как только мой эмиттер закончен, я хочу отключить разъем.

Я попытался

SocketIO socket=new SocketIO("http://IP:9001"); 
socket.emit("EVENT", "data"); 
socket.disconnect(); 

, но это не удается, потому что мы закрываем сокет еще до того, он послал сообщение.

Есть ли какой-либо обработчик для успеха испускания? Как я могу закрыть сокет после успешного испускания?

ответ

0

После того, как вы отправили сообщение серверу, сервер может удалить соединение со своей стороны. Просто при получении определенного сообщения он может просто отключить этот клиентский сокет.
Или сервер может дополнительно отправить ответ, и клиент может закрыть его самостоятельно при получении этого ответа. Но сервер должен обеспечить себе тайм-аут создания таймаута, чтобы закрыть незанятых клиентов, которые не закрыли их самостоятельно.
Я рекомендую выполнять эту операцию на стороне сервера и никогда не доверяю стороне клиента такими решениями.

Клиент может сделать это дополнительно через некоторое время.
Если вы используете Socket.IO только для того, чтобы отправить одно сообщение и закрыть его после отправки сообщения, тогда нет смысла использовать Socket.IO, поскольку он будет иметь накладные расходы на основе процесса подтверждения связи, и вы можете использовать только HTTP-запрос в порядке для отправки отдельных сообщений на сервер.