2014-10-16 113 views
1

我試圖讓我的Google Glass和我的android手機連接到在我的電腦上運行的一個NodeJs服務器,以便我可以從我的android手機發送消息到我的Google Glass。谷歌眼鏡上的Socket.io客戶端

對於這個Im使用koush的AndroidAsync庫,這在我的android手機上效果很好,而且我完全沒有麻煩將這個庫連接到NodeJS服務器。

但是,相同的代碼似乎不適用於我的Google Glass。我的Google Glass DOES連接,因爲我的NodeJS服務器的連接事件處理程序被觸發,它似乎不會觸發我的Google Glass上的任何ConnectCallback功能。

這裏是我的谷歌眼鏡應用程序中使用即時通訊代碼:

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; 
    } 
}); 

}

正如你所看到的,我試着登錄「連接完成的,」在「onConnectCompleted」的功能,但它從不開火,也沒有任何記錄。

我覺得這很奇怪,因爲相同的代碼在我的android手機上工作,當我在我的android手機上運行這段代碼時,會記錄「CONNECTION COMPLETED」。最奇怪的是,當Glass連接時,我的節點服務器實際上選取了Google Glass,因爲在服務器上觸發了連接事件。

因此,任何人都可以幫助我找出爲什麼我的Google Glass顯然連接到我的NodeJS服務器,但在連接時不會觸發任何事件。 (不會觸發ConnectCallback功能,「CONNECTION COMPLETED」從不記錄)?

由於提前,

布拉姆

+0

您能否指定您的Glass是直接連接到您的Wifi網絡還是通過手機的藍牙連接? – Alain 2014-10-17 15:16:36

+0

它通過wifi直接連接,但我設法弄清楚發生了什麼問題。出於某種原因,我的ADT安裝沒有顯示日誌,重新啓動它幾次後,它現在的作品! – Brambo48 2014-10-27 22:47:46

+0

[koush AndroidAsync Socket.IO可能重複:看起來ConnectCallback()在Google Glass上未觸發](http://stackoverflow.com/questions/26370624/koush-androidasync-socket-io-looks-like-connectcallback-是 - 不觸發式) – 2014-11-05 12:10:07

回答

1

我在這裏面臨着同樣的問題,發現雖然我的玻璃顯示出它是連接到我的WiFi網絡,但實際上並非如此。我試過adb shell netcfg,令我驚訝的是wlan0接口沒有分配IP。我再次將它連接到無線網絡,它都開始工作。

奇怪的是,我期待着某種錯誤被記錄(即使我使用不同的Socket.IO client)。我認爲這種情況是沒有過期的超時(連接/套接字超時),所以它仍然試圖連接,並且沒有及時讓我們看到日誌條目。我猜這些庫默認設置的連接超時時間比較長,所以在很多秒之前你都不會看到錯誤。