rails和iphone本机app之间的套接字连接

时间:2013-02-01 11:52:03

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

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

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

许多示例向您展示如何使用浏览器中的套接字实现聊天。

我需要的是如何实现一个应用程序,你可以在rails应用程序中创建套接字服务器,以及iphone应用程序中的客户端,它可以监听我提供的频道。

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

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

另外,我感谢一些链接到一些示例,其中套接字服务器在rails中,客户端是iphone app。

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


更新

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

2 个答案:

答案 0 :(得分:8)

您可以查看 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/

答案 1 :(得分:0)

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

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

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