适用于iOS和Node.js的最小客户端-服务器示例

在本教程中,我将向您展示如何设置Node.js服务器和与其交互的iOS应用。

Node.js

我们将从设置服务器开始。 本部分基于本教程的Android版本。

下载并安装Node.js。

为您的服务器应用程序创建目录。 我们称之为node_server

  mkdir node_server 
cd node_server

使用Node Package Manager设置一个新项目:

  npm初始化 

接受除入口点以外的默认值。 我将使用名称app.js而不是index.js 。 然后创建一个名为app.js的文件。

 触摸app.js 

在您喜欢的编辑器中打开该文件。 许多人使用Visual Studio Code。

让我们使用入门指南中的代码。 将其粘贴到您的app.js文件中。

 const http = require('http'); 
 const hostname = '127.0.0.1'; 
const port = 3000;
 const server = http.createServer((req, res) => { 
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
 server.listen(port, hostname, () => { 
console.log(`Server running at http://${hostname}:${port}/`);
});

现在运行该应用程序。

 节点app.js 

您可以通过将以下内容粘贴到浏览器栏中来测试其是否正常工作:

  http://本地主机:3000 / 

您应该看到显示了Hello World

的iOS

现在让我们继续设置一个iOS应用程序来测试服务器。 以下部分是我在服务器端Swift上发布的iOS部分的修改。

1.布局

在Xcode中,使用Button和Label创建以下布局:

2.禁用应用程序传输安全

对于生产应用程序来说,这不是理想的选择,但是它将帮助我们避免错误,因为我们的服务器目前仅支持未加密的http连接。

将以下密钥添加到您的Info.plist文件中。

 NSAppTransportSecurity 

NSAllowsArbitraryLoads

3.代码

用以下代码粘贴ViewController 。 然后将IBOutletIBAction连接到标签和按钮。

 导入UIKit 
 类ViewController:UIViewController { 

让服务器=“ http:// localhost:3000”

@IBOutlet弱var serverResponseLabel:UILabel!

@IBAction func sendRequestButtonTappled(_ sender:UIButton){
 守护让url = URL(string:server)else {return} 
  //后台任务以使用URLSession发出请求 
let task = URLSession.shared.dataTask(with:url){
(数据,响应,错误)在
 如果让错误=错误{ 
打印(错误)
返回
}
 警卫让数据=其他数据{返回} 
保护let dataString = String(数据:数据,编码:String.Encoding.utf8)否则{返回}
  //如果一切正常,请更新用户界面 
DispatchQueue.main.async {
self.serverResponseLabel.text = dataString
}
}
  //开始任务 
task.resume()
}
}

有关在Swift中发出HTTP请求的更多信息,请参见此问答。

4.测试iOS应用

运行应用程序。 按下按钮,希望您会看到Hello World响应。

成功! Node.js和iOS之间的客户端-服务器通信。

继续

您将需要了解有关以下主题的更多信息,以创建更完整的应用程序。

  • 在Flutter中解析简单的JSON
  • 简单的JSON示例
  • URLSession文档和教程
  • 创建一个REST API