我正在PhoneGap中制作一个Android应用程序。我想做的是让应用程序通过WebSockets与我的Node.js服务器进行通信。我的Node.js服务器使用Socket.IO,当我打开应用程序时,它会自动返回到轮询,而桌面Chrome应用程序则很乐意打开WebSocket并通过它进行通信。
我读过这篇关于将实际的WebSocket API与Phonegap集成的博客文章。问题是,我没有手动覆盖"onConnect,onMessage"函数,而是Socket.IO为我做了所有这些。
有没有办法将WebSockets集成到我的Android Phonegap应用程序中?
简短回答:Cordova WebView不支持WebSocket和socket.io不连接到基于标准的WebSocket客户端。
对于你的客户端,如果你想要真正的websocket,你仍然需要使用Android版本或iOS版本特有的Cordova插件。试试这个搜索,其中包括安卓插件的animiles repo,也是OP.引用的博客
因此,考虑到这一点,socket.io将不适用于您的服务器。不幸的是,socket.io服务器不支持使用基于Html5标准的websocket连接连接到客户端,您必须使用它们的客户端库。正如你所看到的,你不能使用他们在科尔多瓦的客户端库。。。好吧,你可以,它只会回退到轮询。
因此,现在您的websocket客户端是一个基于标准的Cordova插件,您需要一个支持基于标准的websocket连接的服务器。你应该看看SockJs、Worlize、Miksago或Einaros。还有其他的。我目前正在使用Worlize。
需要记住的另一件事是,目前有一个简短的云主机列表支持真正的websocket连接。我推荐DotCloud或Nodejitsu。
如果这回答了您的问题,请单击复选标记:)
更新答案后,这个插件可以与socket.io一起使用,而且使用起来更容易(仅限PhoneGap 3.x)。
https://github.com/mkuklis/phonegap-websocket
这个存储库很快就会集成到phonegap中(至少在自述文件中听起来是这样)
它还提供了使网络套接字在phonegap/android中工作的步骤。
看看:https://github.com/anismiles/websocket-android-phonegap
这是我目前正在评估的另一个websockets Android客户端。
http://jwebsocket.org/mobile/android/android_part1.htm
恐怕我不知道它是否对phonegap项目有用,因为我不熟悉它
Phonegap需要允许您将外部java库合并到您的项目中,并且您需要用java为其构建一个接口。