1

我试图让我的 Google Glass 和我的 android 手机连接到我在我的计算机上运行的 NodeJs 服务器,这样我就可以将消息从我的 android 手机发送到我的 Google Glass。

为此,我使用了 koush 的 AndroidAsync 库,该库在我的 android 手机上运行良好,而且我可以毫无困难地将手机连接到使用该库的 NodeJS 服务器。

但是,相同的代码似乎不适用于我的 Google Glass。我的 Google Glass 确实连接了,因为我的 NodeJS 服务器的 on connection 事件处理程序被触发,它似乎没有触发我的 Google Glass 上的任何 ConnectCallback 函数。

这是我在 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;
    }
});

}

如您所见,我试图在“onConnectCompleted”函数中记录“CONNECTION COMPLETED”,但它永远不会触发,也不会记录任何内容。

我觉得这很奇怪,因为相同的代码在我的 android 手机上运行,​​并且当我在我的 android 手机上运行这段代码时会记录“连接完成”。最奇怪的是,当我的 Glass 连接时,在服务器上触发了 on connection 事件,我的节点服务器实际上选择了 Google Glass。

所以,谁能帮我找出为什么我的谷歌眼镜显然连接到我的 NodeJS 服务器,但在连接时没有触发任何事件。(不触发 ConnectCallback 函数,“连接完成”从未被记录)?

提前致谢,

布拉姆

4

1 回答 1

1

我在这里遇到了同样的问题,并注意到虽然我的 Glass 显示它已连接到我的 Wifi 网络,但实际上并没有。我试adb shell netcfg了一下,令我惊讶的是,wlan0接口没有分配 IP。我再次将它重新连接到 wifi 网络,一切都开始正常工作了。

奇怪的是,我期望记录某种错误(即使我使用的是不同的Socket.IO 客户端)。我相信这种情况是没有过期的超时(连接/套接字超时),所以它仍在尝试连接并且没有及时失败让我们看到日志条目。我猜这些库默认设置了相对较高的连接超时,所以在几秒钟过去之前你不会看到错误。

于 2015-01-02T21:09:26.547 回答