javascript - 在 iOS 上运行 Node.js 作为服务器并让其他设备连接进来

标签 javascript android ios node.js html

我正在 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)通信的最佳方式是什么?

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

最佳答案

我的声誉不足以发表评论,但无论如何我都会建议使用什么。如果您在 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()

关于javascript - 在 iOS 上运行 Node.js 作为服务器并让其他设备连接进来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32195832/

相关文章:

javascript - 使用变量显示隐藏的 div

javascript - 添加项目的对象长度

android - 以编程方式无法在 RelativeLayout 中对齐 ImageView

android - 在android中以字节[]下载数据

ios - 试图从文档目录中删除文件

ios - 如何设置 UITableView 右侧 sectionIndex 的字体大小?

javascript - Nodejs,如何在浏览器中查看jsdom

javascript - jQuery 查找和替换文本

android - 如何在android中缩小图像

ios - 如何在 AirDrop 上显示 myapp?我的 Plist 文件有什么问题?