如何在 Nativescript 中实现 XMPP 通信?

Posted

技术标签:

【中文标题】如何在 Nativescript 中实现 XMPP 通信?【英文标题】:How to implement XMPP communication in Nativescript? 【发布时间】:2019-01-20 08:03:09 【问题描述】:

在 Nativescript 中使用像 stanza.io 这样的库与像 MongooseIM 这样的 XMPP 服务器通信有什么限制吗?还有什么其他选择?

【问题讨论】:

【参考方案1】:

如果 stanza.io 支持 NativeScript,那么应该没有任何限制。

在他们的 GitHub 主页上,他们说这是一个浏览器中的现代 XMPP,带有 JSON API。所以它主要用于浏览器环境,我不确定 NativeScript。

作为替代方式 - 有一个支持 NativeScript 的 xmpp.js 库。他们的文档有点糟糕,但是使用 src 代码有一种方法可以成功集成它。

有一个关于如何将它用于 ReactNative 的指南,但是您可以从中获取一些用于 NativeScript 的部分,尤其是那些与 lib 本身相关的部分。 https://medium.com/@connectycube/xmpp-real-time-chat-in-react-native-8d6d5d23dd47

您还可以使用一些现成的 XMPP 高级平台进行聊天,例如https://connectycube.com/2018/12/11/connectycube-textchat-code-sample-for-nativescript/ 在这种情况下,您不需要关心 XMPP 服务器的安装和监控

【讨论】:

好吧,Nativescript 使用 javascript 虚拟机,所以我很困惑你提到的浏览器点是一个问题,在他们的页面中你可以阅读“一般来说,NativeScript 尝试使用最新的稳定版本V8 和 JavaScriptCore;因此 NativeScript for ios 中的 ECMAScript 语言支持与桌面版 Safari 中的支持几乎相同,而 NativeScript for android 中的支持几乎与桌面版 Chrome 中的支持相同。”,但我一定会去看看xmpp.js 和 ConnectyCube 一样,从财务角度来说,这超出了我的能力范围。 好的,我刚刚在这里发布了他们的标题,所以不确定 stanza.io。但我可以肯定地说 xmpp.js 适用于 NativeScript 所以我经历了试图让节与nativescript一起工作的痛苦并且没有运气,我还检查了那里的教程,它也没有太大帮助,有没有人找到可靠的解决方案? 【参考方案2】:

您必须找到第三方服务器或托管您自己的实现 XMPP 协议的服务器,并使用 N 应用程序中的 Websockets 或 XMPP 插件连接到该服务器。

仅供参考,此 XMPP 插件实现了与 the MongooseIM docs 中解释的相同的 pod 库,但 JavaScript api 未完全实现,因此您可能必须根据需要直接访问本机 api。

您也可以参考nativescript-xmpp-client,这是 XMPP 实现的另一个示例。

【讨论】:

'nativescript-xmpp-client' 是一种潜在的方式,但最近一次提交是在大约 2.5 年前,所以我不确定它是否仍然有效 @Rubycon 这不是最佳选择,因为它不支持 wss。见github.com/samuelagm/nativescript-xmpp-client/issues/3 @DanielArechiga 我认为您不需要在移动设备上使用 WSS,因为那里使用了非常标准的 TCP 套接字连接 @Rubycon 这与需求无关,我关心的是延迟、带宽使用和开销。 抱歉,我以为我们是在比较 BOSH 和 websocket,当然,纯 TCP 总是更快,感谢您的回答

以上是关于如何在 Nativescript 中实现 XMPP 通信?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nativescript 应用程序中实现“BottomNavigation”元素?

如何在 Android 应用中实现 XMPP 聊天?

如何使用 XMPP 框架在 iphone 中实现实时聊天? [关闭]

如何在 iOS 应用中实现 webRTC

在xmpp android中实现心跳机制

在java中实现一个xmpp客户端——卡在第一步