Связь между всеми устройствами поблизости

Мне нужно реализовать связь между всеми устройствами, подключенными к одной и той же точке доступа WiFi. Я использую API Google Nearby Connections. Я могу подключиться к нескольким устройствам и общаться. Но из-за какой-то проблемы соединение теряется. Я проверил документацию Google, в ней говорится, что «когда устройство подключено к хосту, оно может отправлять сообщения на другие клиентские устройства».

https://developers.google.com/nearby/connections/android/manage-connections

Я сомневаюсь, что это означает «он может отправлять сообщения на другие клиентские устройства».

Если к хост-устройству подключено несколько клиентских устройств, то как клиентское устройство может отправить сообщение другим клиентским устройствам?


person Vikash Kumar    schedule 28.08.2015    source источник


Ответы (2)


Я никогда не пробовал этого, но кажется, что вы можете получить endpointId клиентов с Nearby.Connections.getLocalEndpointId() на клиентских устройствах. Не уверен, как это помогает отправлять сообщения другим клиентам, потому что хост все равно знает Client-EndpointIds...

Однако в качестве доказательства концепции вы можете сделать что-то вроде этого:

В хосте:

String payload = client2EndpointId;
Nearby.Connections.sendReliableMessage(mGoogleApiClient, client1EndpointId, payload);

В клиенте1:

@Override
public void onMessageReceived(String endpointId, byte[] payload, boolean isReliable) {
    String client2EndpointId = (String) payload;
    Nearby.Connections.sendReliableMessage(mGoogleApiClient, client2EndpointId, messageFromClient1ToClient2);
}

И в Клиенте2:

@Override
public void onMessageReceived(String endpointId, byte[] payload, boolean isReliable) {
    String messageFromClient1 = (String) payload;
}

Хост отправляет EndpointId client2 в виде сообщения client1. Затем Client1 использует этот endpointId для отправки сообщения client2.

person StefanTo    schedule 04.12.2015

Соединения при использовании Nearby Connections API теряются, когда

  • вы или другое устройство отключаетесь от Wi-Fi
  • вы и другое устройство подключены к разным сетям Wi-Fi (помните, что вы используете Nearby Connection, которое работает в локальной сети, если вы хотите отправить сообщение через другую сеть, используйте Nearby Message API)
  • соединение теряется, даже если приложение на одном из устройств свернуто, закрыто (уничтожено) и т. д.

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

"он может отправлять сообщения на другие клиентские устройства"

Страница разработчика означает, что состояние соединения (принято, отклонено и т. д.) может быть отправлено, когда хост отвечает на запрос на соединение.

Если к хост-устройству подключено несколько клиентских устройств, то как клиентское устройство может отправить сообщение другим клиентским устройствам?

И, если подключено несколько устройств, вы можете отправить свое сообщение (или, скорее, данные) на хост, который отправит одни и те же данные всем подключенным к нему клиентам (так работает большая часть системы хост-клиент).

Я надеюсь, что это помогло

person Neeraj Thakur    schedule 17.06.2016