2014-10-16 142 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)。我认为这种情况是没有过期的超时(连接/套接字超时),所以它仍然试图连接,并且没有及时让我们看到日志条目。我猜这些库默认设置的连接超时时间比较长,所以在很多秒之前你都不会看到错误。