适用于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
。 然后将IBOutlet
和IBAction
连接到标签和按钮。
导入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
- 检查互联网连接是否可用迅速
- 将“正确的”数据从UITableViewController中的选定单元传递给ViewController
- 在iPhone 5s iOS 8.1.2和Simulator 8.1上找不到支持types4和5的主板
- 从completionHandler中调用UIView相关的调用?
- 在蒸气上具有Swift的REST API
- ASIHTTPRequest似乎总是cachingJSON数据
- IOS – 不能以编程方式打开Whatsapp聊天,但可以通过HTML来完成
- WKWebView – Javascript确认和警报不起作用
- iOS:是否可以直接在Safari中打开NSURLRequest?