1

Я пытаюсь подключить свой Google Glass и мой Android-телефон к серверу NodeJs, который я запускаю на своем компьютере, чтобы я мог отправлять сообщения с моего телефона Android в свой Google Glass.Клиент Socket.io на Google Glass

Для этого я использую библиотеку AndroidAsync от koush, которая отлично работает на моем телефоне Android, и у меня нет абсолютно никаких проблем с подключением моего телефона к NodeJS-серверу с этой библиотекой.

Однако, тот же код, похоже, не работает на моем стекле Google. Мой Google Glass подключается, потому что запущен обработчик событий на моем сервере NodeJS IS, он просто не запускает ни одну из функций ConnectCallback в моем Google Glass.

Вот код Im используя в моем приложении Google Glass:

SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(), "http://192.168.1.229:5000", new ConnectCallback() { 
    @Override 
    public void onConnectCompleted(Exception ex, SocketIOClient client) { 
     Log.i("SOCKET", "CONNECTION COMPLETED"); 
     if (ex != null) { 
      ex.printStackTrace(); 
      return; 
     } 

     client.setStringCallback(new StringCallback() { 
      @Override 
      public void onString(String string, Acknowledge acknowledge) { 
       Log.d("SOCKET", string); 
      } 
     }); 

     client.setJSONCallback(new JSONCallback() { 
      @Override 
      public void onJSON(JSONObject jsonObject, Acknowledge acknowledge) { 
       Log.d("SOCKET", jsonObject.toString()); 
      } 
     }); 

     client.on("event", new EventCallback() { 
      @Override 
      public void onEvent(JSONArray jsonArray, Acknowledge acknowledge) { 
       Log.i("DATA: ", jsonArray.toString()); 
       Gson gson = new Gson(); 
      } 
     }); 
     mClient = client; 
    } 
}); 

}

Как вы можете видеть, Im пытаясь войти "СОЕДИНЕНИЕ ЗАВЕРШЕНА" в функции "onConnectCompleted", но никогда не срабатывает, и ничто никогда не регистрируется.

Я нахожу это довольно странным, так как тот же код работает на моем телефоне Android и «СОЕДИНЕНИЕ ЗАВЕРШЕНО» Записывается, когда я запускаю этот бит кода на моем телефоне Android. Самое странное, что мой узел-сервер фактически подбирает Google Glass, поскольку событие подключения происходит на сервере, когда мое стекло подключается.

Итак, кто-нибудь может помочь мне выяснить, почему мой Google Glass IS, по-видимому, подключается к моему NodeJS-серверу, но НЕ запускает какие-либо события при его подключении. (Не запуская функции ConnectCallback, «CONNECTION COMPLETED» никогда не регистрируется)?

Спасибо заранее,

Брого

+0

Не могли бы вы указать, подключено ли ваше стекло непосредственно к вашей сети Wi-Fi или если оно проходит через Bluetooth-соединение вашего телефона? – Alain

+0

Это связано напрямую через Wi-Fi, но мне удалось выяснить, что происходит не так. По какой-то причине моя установка ADT не показывала журналы, после перезапуска несколько раз это работает! – Brambo48

+0

Возможный дубликат [koush AndroidAsync Socket.IO: похоже, что ConnectCallback() не запускается в Google Glass] (http://stackoverflow.com/questions/26370624/koush-androidasync-socket-io-looks-like-connectcallback- это-не срабатывает-на) –

ответ

1

Я столкнулась с таким же вопросом здесь и заметила, хотя мое стекло показало, что это было связанно с моей Wi-Fi сети, это на самом деле не было. Я попробовал adb shell netcfg, и к моему удивлению интерфейс wlan0 не имел назначенного IP-адреса. Я снова подключил его к Wi-Fi сети, и все это начало работать нормально.

Странная вещь, хотя это то, что я ожидал, что какая-то ошибка будет записана (хотя я использовал другой Socket.IO client). Я считаю, что причиной является тайм-аут, срок действия которого не истекал (время ожидания подключения/сокета), поэтому он все еще пытался подключиться и не успел со временем увидеть запись в журнале. Я предполагаю, что эти библиотеки имеют относительно высокий тайм-аут соединения, установленный по умолчанию, поэтому вы не увидите ошибки до того, как пройдет много секунд.