【问题标题】:Socket connection between rails and iphone native apprails和iphone native app之间的socket连接
【发布时间】:2013-02-01 11:52:03
【问题描述】:

我有一个使用 rails 作为后端服务器的 iphone 应用程序。

现在我需要使用套接字连接来实现聊天功能。

大量示例向您展示了如何在浏览器中使用套接字实现聊天。

我在这里需要的是如何实现一个应用程序,您可以在其中创建在 rails 应用程序中的套接字服务器,以及在 iphone 应用程序中侦听我给他们的频道的客户端。

我尝试使用 faye(仅给出如何在浏览器中实现客户端的示例)并使用 fayeObjC 库为 iphone 创建客户端,但我无法收听该库中的频道。我知道我一定是执行错误在这里。

我也会在这里分享我的代码,但首先我需要知道有没有比这更好的解决方案?

我也很欣赏一些示例的链接,其中套接字服务器位于 Rails 中,客户端是 iphone 应用程序。

感谢任何帮助,并且最需要一个正确的方向来实施它。


更新

我再次尝试了faye组合并且它起作用了。尽管仍在寻找更多解决方案。

【问题讨论】:

  • 嘿,非常感谢您提供这些链接。帮助清除了一些概念。虽然我再次尝试了 faye 组合并且效果很好。虽然我很想尝试更多选择。
  • 所以.. :) 如果这有帮助.. 我可以发表我的评论.. 就像一个答案.. 你能接受吗? :)
  • Tony 对这么晚的回复感到抱歉。但请务必将其添加为答案,我会接受。顺便说一句,我喜欢此链接 raywenderlich.com/3932/…,这正是我想要实现的目标,但任何想法如何用红宝石做到这一点。
  • 而且通过 ruby​​ 创建套接字会很慢且不安全。因此,如果您能提供任何帮助以使其安全和可扩展,我们也非常感谢。

标签: iphone ruby-on-rails sockets websocket chat


【解决方案1】:

您可以查看 TCP 套接字

下一个链接是全面的网络指南 - Using Internet Sockets

您必须牢记点对点通信(聊天)的两个主要问题:可达性以及如何在应用程序处于后台时接收新消息(获取通知)。 最后,您可以使用 APNS 方法:将向 iPhone 推送一条不可见的通知,指示有新消息可供阅读。因此,您的应用会请求未读消息(WhatsApp 之类的应用会这样做)。

除了 TCP 套接字,您还可以使用 websockets(HTTP - 因此没有防火墙问题)。 一流的 - Socket.IO。 在这里您可以找到 wiki https://github.com/learnboost/socket.io/wiki(您还可以找到 Ruby 的扩展)

这里是iOS chat client for socket.io & node.js backend的示例

Jabber

另一个选项:XMPP - “代表可扩展消息传递和存在协议。这样的协议是开放标准的,面向消息交换(由 Jabber 社区构建和维护)。消息交换几乎是真实发生的时间,因此它是构建类似聊天应用程序的理想基础设施。该协议还实现了通知状态信息(用户是否在线)和维护联系人列表的机制。XMPP 是一个彻底的协议,它具有也被谷歌等大公司采用来构建他们的即时消息服务。”

在这里,您将找到有关开发适用于 iOS 的 Jabber 客户端的所有信息(使用户能够登录、添加好友和发送消息;如何安装和配置 Jabber 服务器、创建帐户以及从 iOS 应用程序与服务器交互http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/

【讨论】:

    【解决方案2】:

    我知道SocketRocket by square 是一个强大的原生 Objective-C 库。但它没有提供您似乎正在寻找的通道抽象。

    如果您考虑将 WebSocket 连接外包,那么您可以使用像 Pusher 这样的托管服务,我为他工作。您可以使用pusher-gem 在通道上发布消息(触发事件)。您可以使用Pusher's Objective-C libraries 之一订阅频道和接收消息。

    其他解决方案也将包含 Objective-C 库,您可以通过 realtime web tech guide 找到它们的列表。

    【讨论】:

    • 我实际上不是在寻找外包 Websocket 连接,只是我想实现我自己的,所以我可以有我的自定义方法来有一个自定义规则来检索消息。但感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多