Google Glass 上的 Socket.io 客户端

Posted

技术标签:

【中文标题】Google Glass 上的 Socket.io 客户端【英文标题】:Socket.io client on Google Glass 【发布时间】:2014-12-12 00:28:11 【问题描述】:

我正在尝试让我的 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”,但它从未触发,也没有记录任何内容。

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

那么,谁能帮我找出为什么我的 Google Glass 明显连接到我的 NodeJS 服务器,但在连接时没有触发任何事件。 (不触发 ConnectCallback 函数,永远不会记录“CONNECTION COMPLETED”)?

提前致谢,

布拉姆

【问题讨论】:

您能否指定您的 Glass 是直接连接到您的 Wifi 网络还是通过手机的蓝牙连接? 它直接通过wifi连接,但我设法弄清楚出了什么问题。出于某种原因,我安装的 ADT 没有显示日志,在重新启动几次后它现在可以工作了! koush AndroidAsync Socket.IO : Looks like ConnectCallback() is not triggered on Google Glass的可能重复 【参考方案1】:

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

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

【讨论】:

以上是关于Google Glass 上的 Socket.io 客户端的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 和 Socket.IO 上的移动聊天应用程序

Google Glass App,请在编辑配置中选择Android SDK

如何为 Google Glass 分发测试版应用程序

Firefox / Google chrome 的 Socket.io 客户端插件

如何将 socket.io 部署到 Google App Engine?

Google Glass - 安装 APK 时出错