【问题标题】:How to be sure to receive requests over the network? (for the staff in a shop for example)如何确保通过网络接收请求? (以商店的员工为例)
【发布时间】:2015-01-19 23:29:23
【问题描述】:

如果我想确保设备通过网络接收消息,例如商店中卖家使用的应用程序。
我听说推送通知不是 100% 可靠的,有时有些通知没有到达,或者没有按时到达。

应用程序可以在商店中,员工相互交流,并且可以连接 10 台设备。 (ipad、iphone)

编辑 1:我听说过套接字,这是正确的方向吗?


编辑2:

我不确定为什么应该使用套接字,而不是网络服务器,例如,我发现了这两个句子(来源 raywenderlich):

  • 您可以随时发送连接的客户端数据,而不需要客户端轮询。
  • 您可以编写不依赖于 Web 服务器的套接字服务器,并且可以使用您选择的语言编写:不明白“依赖”是什么?

这是否也意味着: 与没有登录名/密码的情况下每个人都可以连接的网络服务器相比,套接字允许 2 个(或更多)特定设备在私有连接中相互连接?


编辑 3:也许具有 MultiPeerConnectivity 的蓝牙解决方案会更好...

【问题讨论】:

    标签: ios sockets bluetooth push-notification multiple-monitors


    【解决方案1】:

    一般来说,套接字和推送通知的可靠性取决于用户所连接的网络。如果您希望在保证 100% 成功率的情况下规避网络可靠性,在用户靠近的商店环境中,您可以查看 GKSession 作为 GameKit.framework 的一部分

    或者您可以研究 Bonjour 或客户端/服务发现协议,这些协议可以“了解”网络中的对等点

    我再次看到您标记了 Parse.com,推送通知的可靠性高度依赖于可访问性,但是,Parse 出现的大多数问题与开发端相关,而不是与产品相关。

    编辑我忘了提MultiPeerConnectivity

    【讨论】:

    • 感谢灵光一现,非常有趣。你是对的,multipeerConnectivity 看起来不错。你可以在wifi和蓝牙之间选择吗?我想我正在遵循这种方式,看起来是一个很好的解决方案。
    • @Paul 是的,您可以有效地在两者之间切换。 Wifi 的范围可能更好,但是这个框架的好处是你可以菊花链设备,比如你有 10 个设备,而你的设备 4 遥不可及,你可以通过 1 到 8 到 6 发送消息到4,他们将恢复它。这是一个糟糕的例子,但范围不是问题。它是在 iOS7 中引入的,我敢肯定现在已经有教程了
    • 完美,谢谢,我找到了一个名为“multipeerGroupChat”的示例,感谢您的回答。
    【解决方案2】:

    如果您使用 TCP 套接字,则可以保证消息将被传递,而且速度也很快。

    但是,应用程序必须打开(并且很可能在前台)才能接收消息。您始终可以让服务器等待客户端连接发送消息。

    我建议同时使用 TCP 套接字和推送通知(在应用关闭时)。

    【讨论】:

    • 我不小心在你的答案中包含了一个编辑,而不是我的。请拒绝更改。
    • TCP 套接字和推送通知的应用程序完全不同。使用这两者的组合只会造成混乱。特别是对于给定的信息,应该使用套接字。
    • 谢谢哈里斯和@user523234,我编辑了我的消息,你能看一下吗?
    • 感谢soulshined,我找到了更多信息,也许蓝牙解决方案会更好?
    • @Paul Webservers 建立在套接字之上,但正如您发现的两个示例,套接字可以做的更多。使用 Web 服务器方法,您的应用程序必须每隔一段时间(比如 2 分钟)请求更新。使用套接字,您可以创建双向连接,并立即通知客户端任何更改,而无需客户端询问。我也不建议使用蓝牙,因为(虽然我不熟悉您公司/办公室的布局),蓝牙提供的距离非常短,并且无法以任何方式帮助您解决 wifi 无法解决的问题。
    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2019-03-23
    • 2023-03-04
    相关资源
    最近更新 更多