【发布时间】:2016-03-07 19:03:11
【问题描述】:
我必须做出技术决定,但我不确定。 我必须在 iOS 和 Android 上运行的 Phonegap-App 中实现聊天。
整个应用基于 Microsoft Azure-Mobile Service,所以我有足够的服务器能力。
目前我已经确定了三种实现这种聊天的方法:
- Websockets:应用程序通过 websockets 与后端进行通信,这将在 Node.JS 中完成。每条新消息都通过该套接字推送到服务器,并且用户发送的每条消息都在该通道上发回。我的问题是 websockets 的可靠性,特别是当我们考虑到用户四处走动时,是连接到公共 WIFI 热点还是通过 GPRS...我有一些 websockets 被代理阻止的糟糕经历。
- 彗星/长轮询:应用程序发起长轮询请求,服务器不断检查传入的消息,当它们到达时,他立即回复。因为我使用的是 NodeJS,所以这更容易,因为没有线程阻塞。但这样做对我来说感觉很糟糕,尤其是在 HTML5 的所有这些新可能性中(例如,Websockets,见上文)
- APNS / GCM:使用各个平台的 Push Message-Services 将此类信息发送到设备。这意味着,如果用户在后台打开应用程序,那么无论几秒钟都会收到消息(尤其是在使用频率很高的聊天室中)
你会推荐什么?您是否曾经在手机 Phonegap 应用中使用过 websockets 示例?
【问题讨论】:
-
Websocket 不错,但只支持 Android >4.4。
-
这不是真正的问题,有适用于旧 android 版本的 phonegap 插件......但是连接性呢?当用户四处走动并将网络从 WiFi 更改为 GPRS,或者当他连接到具有阻止 websockets 代理的公共 WiFi Spot 时......?
-
@iliraga 在这种情况下,您最好使用带有后备功能的 websocket 库,例如 socket.io。新版本还不错。
-
我选择使用像 Pusher 这样的商业服务,它很好地集成到 Azure 环境中,如果 websocket 不受支持或当前不可用,则使用长轮询回退。
标签: android ios cordova websocket chat