我正在PhoneGap中制作一个Android应用程序。我想要做的是让应用程序通过WebSockets与我的Node.js服务器通信。我的Node.js服务器使用Socket.IO,当我打开应用程序时,它会自动回退到轮询,这与桌面Chrome应用程序相反,后者高兴地打开了WebSocket并通过它进行通信。

我已阅读this blogpost,了解如何将实际的WebSocket API与Phonegap集成。这里的问题是我没有手动覆盖'onConnect,onMessage'函数,而是Socket.IO为我完成了所有这些工作。

有什么方法可以将WebSockets集成到我的Android Phonegap应用程序中吗?

最佳答案

简短的答案: Cordova WebView不支持WebSockets ,而 socket.io不连接到基于标准的WebSocket客户端

对于您的客户而言,如果您仍然需要真正的Web套接字,则仍然需要使用特定于Android构建或iOS构建的Cordova插件。尝试this search,它包括一个Android插件的anismiles repo ,与OP引用的博客相同。

因此,请记住,socket.io将不适用于您的服务器。不幸的是,socket.io服务器不支持使用基于Html5标准的Websocket连接来连接客户端,您必须使用其客户端库。如您所见,您不能在Cordova中使用他们的客户端库...可以,它只能回退到轮询。

因此,现在您的websocket客户端是基于标准的Cordova插件,您需要一台支持基于标准的websocket连接的服务器。您应该看看SockJsWorlizeMiksagoEinaros。还有其他我目前正在使用Worlize。

要记住的另一件事是,有一小部分云主机当前支持真正的websocket连接。我建议DotCloudNodejitsu

如果这回答了您的问题,请单击复选标记:)

09-30 16:20
查看更多