【问题标题】:Socket connection on iPhone (IOS 4.x)iPhone 上的套接字连接 (IOS 4.x)
【发布时间】:2011-01-05 04:12:24
【问题描述】:

我正在 iPhone 上开发一个聊天应用程序(需要连接到服务器)。从 iPhone 发送数据包应该没有问题。

但是我想知道iPhone在移动环境下是否可以连续或永远建立与服务器的传入套接字连接。

或者我需要做什么才能使连接保持活跃?需要在它上面发送一些东西来让它保持活力吗?

谢谢。

【问题讨论】:

  • SkyEagle888 :您可以在您的应用程序中使用 cllocation updater 并在每个位置更新套接字中调用并更新数据给您,我们会这样做

标签: ios4


【解决方案1】:

不知道为什么要让聊天应用程序保持连接...我最好使用类似 SMS 的模型。无论如何,Cocoa NSStream 是基于 NSSocket 并允许很多功能。看看吧。

回答问题。简而言之,我会做什么:

  1. 从服务器获取身份验证令牌。
    • 如有必要,这也会处理用户的存在,但现在我们正在讨论状态;一旦知道存在,服务器可能会向活跃且在其联系人列表中有用户的客户端发送通知。
  2. 获取用户的联系人列表和联系人在线状态。
  3. 消息发送时,根据收件人状态进行处理,即如果在线,则与其他用户通信,如果离线,则排队等待稍后发送或拒绝。
  4. 令牌过期后,拒绝通信并显示相应错误并让客户端请求新令牌。

从服务器到客户端的通信,可以基于拉或推模型。在第一种情况下,客户端会定期发出请求并获取所有消息。这听起来可能不太好,但实际上,用户撰写和发送消息的频率如何?一分钟几次?这还不算太多。所以抓取可能每 5-10 秒发生一次。

对于推送模式,客户端必须能够监听和接受连接。

最后,查看 SIP,会话发起协议。虽然不需要使用它的完整版。只是基本的东西。

这是非常粗略的,也许是简化的。我不知道您的聊天系统的目标复杂性。例如,最简单的事情也可以是服务器通过分发端点来实现客户端到客户端的通信,而客户端自己处理所有事情。

祝你好运!

【讨论】:

  • 实际上,我们对实现它的方式持开放态度。是否有任何关于更通用的实施方法(如 Whatsapp 或 eBuddy)的提示?
  • @Schultz999:我们用套接字编程制作了一个 iphone 聊天应用程序,它总是显示在线的人,当用户离线时它显示离线,我们不需要做任何额外的事情
  • @GhostRider:好吧,客户端应用程序必须以某种方式知道用户离线。它要么必须调用以刷新联系人列表状态,要么必须提供该信息。它不能凭空出现,对吧?那你怎么办?
【解决方案2】:

超级过时的响应,但也许它会帮助下一个人。

我会使用 xmppframework 和 jabber 服务器。

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 2020-06-30
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多