【问题标题】:Running Node.js on iOS as a server and let other device connected in在 iOS 上运行 Node.js 作为服务器并让其他设备连接
【发布时间】:2015-08-25 04:59:56
【问题描述】:

我正在 iOS 和 android 上构建一个纸牌游戏应用,其逻辑如下:

  1. 人们从 App Store / Google Play 下载应用程序
  2. 他们可以与同一个 wifi 网络中的其他玩家离线玩游戏
  3. 一个客户端将充当服务器,而其他玩家将充当客户端
  4. 游戏是一款嵌入了 Node.js、SQLite 的应用
  5. 每个玩家的动作都会保存在服务器中
  6. 当有互联网访问时,iOS 作为服务器将数据发送到云端

我的做法是

  1. 游戏将是带有 Node.js 的 HTML5,玩家充当游戏持有者(服务器)将打开一个端口(如端口 80)

  2. 其他玩家将使用 HTTP get/set 向游戏持有者发送和接收 JSON 包

我的问题是

  1. 我是否可以在 iOS 上运行 Node.js 作为服务器并打开端口让其他玩家连接?这样我就可以使用 JSON 进行玩家之间的所有通信。

  2. 如果没有,不同设备(iOS、android、Windows Phone)的最佳通信方式是什么?

我们将不胜感激任何建议和帮助。谢谢。 迈克尔

【问题讨论】:

  • 我不认为你可以在没有越狱的情况下在 iOS 上运行 node.js。使用 parse.com 作为后端将是一个不错的选择。 parse 正在运行类似 nodejs 的东西
  • 如果仅适用于 iOS。有本地 API 来连接本地网络中的设备。您可以在 Apple Developer Center 中找到示例
  • 另一个选项是 websocket。您可以在客户端之间使用 websocket 进行通信。这将是一个嵌入到 webview 中的 HTML5 应用程序
  • @EricSo 谢谢你提供的信息,websocket 能否在 iOS 和 Android 上打开端口,以便我可以在 HTML5 应用程序中打开端口 80 并让其他设备使用 HTTP 调用发送/接收数据?

标签: javascript android ios node.js html


【解决方案1】:

我的声誉不足以发表评论,但我会建议使用什么。如果您在 Node.js 中创建服务器,那么此答案的其余部分将告诉您该怎么做。使用 CFNetwork 和 CoreFoundation。假设您以字符串格式发送数据,这段代码应该会有所帮助(代码将字符串发送到服务器)。

    import CoreFoundation
    import CFNetwork

    var outputStream: NSOutputStream!

    var writeStream: Unmanaged<CFWriteStreamRef>?

    var addr: CFString = "127.0.0.1"

    var port: UInt32 = 80 
    //the second nil in CFStreamCreatePairWithHost is a read stream. which means it reads data. we don't need it bc we are only sending data

    CFStreamCreatePairWithSocketToHost(nil, addr, port, nil, &writeStream)
        outputStream = writeStream!.takeRetainedValue()

        outputStream.delegate = self

        outputStream.open()

        outputStream.write("fireGun", maxLength: 8 //(the char count of fireGun")
        //close outputStream
        outputStream.close()

【讨论】:

  • 但他希望该应用也可以离线使用 2. 他们可以与同一个 wifi 网络中的其他玩家离线玩游戏
  • 没有看过你的代码。我以为你在谈论连接到 nodejs 服务器
  • @RichterB。我的应用程序的主要目标是用户可以使用他们的 iOS / Anrdoid 设备作为服务器,而其他玩家可以作为客户端连接并在同一个 wifi 网络中玩游戏,所以我主要关心的是有什么方法可以在我的应用程序中部署 Node.js 并在我的应用程序中构建一个 HTTP 服务器。感谢您的信息。
猜你喜欢
  • 2020-02-10
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
相关资源
最近更新 更多