PhoneGap应用程序中使用Node.js / Socket.IO服务器和客户端的Android版WebSockets

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

我读过关于将实际的WebSocket API与Phonegap集成的博文。 问题是我不是手动重写'onConnect,onMessage'函数,而是Socket.IO为我做了这一切。

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

简短的回答: cordovaWebView不支持WebSockets,并且socket.io不连接到基于标准的WebSocket客户端

对于你的客户来说,如果你想要真正的websockets,你仍然需要使用一个特定于Android版本或者iOS版本的Cordova插件。 试试这个search ,其中包括Android插件的anismiles回购,OP引用的博客。

所以考虑到这一点,socket.io将无法为您的服务器。 不幸的是,socket.io服务器不支持通过基于Html5标准的websocket连接来连接客户端,你必须使用他们的客户端库。 正如你所看到的,你不能在cordova使用他们的客户端库…你可以,它只会回退到投票。

所以现在你的websocket客户端是一个基于标准的Cordova插件,你需要一个支持基于标准的websocket连接的服务器。 你应该看看SockJs , Worlize , Miksago或者Einaros 。 还有其他的。 我目前正在使用Worlize。

还有一点需要注意的是,目前支持真正websocket连接的云主机列表很less。 我推荐DotCloud或Nodejitsu 。

如果这回答你的问题,请点击复选标记:)

更新答案,这个插件使用socket.io,使用起来更容易(仅限PhoneGap 3.x)。

https://github.com/mkuklis/phonegap-websocket

这个仓库很快就会集成到phonegap中(至less听起来就像在自述文件中那样)

它还提供了使networking套接字在phonegap / android工作的步骤。

看看: https : //github.com/anismiles/websocket-android-phonegap

这是另一个websockets Android客户端,我目前正在评估。

http://jwebsocket.org/mobile/android/android_part1.htm

恐怕我不知道它是否对电话项目有用,而不熟悉它。

Phonegap需要允许你将一个外部的java库join到你的项目中,并且你需要在java中为它build立一个接口。