【发布时间】:2017-04-05 05:30:07
【问题描述】:
我无法连接到我在 EC2 上的在线领域。我有一个 EC2 实例正在运行。我已经运行start-object-server.command。我已经粘贴了我的 setupRealm() 方法的代码。
let address = "XX.YYY.ZZZ.AA:9080" // "IPv4 PublicIP" from my EC2 dashboard
var httpURL: URL! { return URL(string: "http://" + address)! }
var realmURL: URL! { return URL(string: "realm://" + address)! }
func setupRealm() {
// My credentials when setting up the Realm admin dashboard after launching realm object server.
let username = "XXXXX@gmail.com"
let password = "XXXX"
let credentials = SyncCredentials.usernamePassword(username: username, password: password)
SyncUser.logIn(with: credentials, server: httpURL) { user, error in
guard let user = user else {
print(String(describing: error!))
return
}
...
}
}
SyncUser.logIn 产生此错误:
Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server."
UserInfo={NSUnderlyingError=0x600000059680 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)"
UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}},
NSErrorFailingURLStringKey=http://XX.YYY.ZZZ.AA:9080/auth,
NSErrorFailingURLKey=http://XX.YYY.ZZZ.AA:9080/auth, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61,
NSLocalizedDescription=Could not connect to the server.}
我也无法使用领域浏览器登录我的同步领域,但我可以从 iOS 模拟器打开本地(非同步)领域。我正在运行最新版本的 Realm Browser。
奇怪的是,大约一周前,我能够使用我的应用程序和浏览器以及与该领域同步的另一个应用程序连接到 EC2 领域。我已经比较了代码,它们基本上是相同的——我发现的任何差异我都非常确信它们无关紧要(我已经尝试将一些东西改回来,但无济于事。)
自从它开始工作以来,我已经安装了最近的 macOS 更新以及 Realm 2.5 更新。我在领域更新方面遇到了一些麻烦,最终安装并重新安装了几次,但我相信它可以正常工作,并且再次使用最新版本的所有内容。我不认为我改变了什么,我不记得了。
不幸的是,我实际上不记得我设置 EC2 服务器的过程——即:
- 我不认为我对 AMI 做过任何事情。我不记得安装任何或类似的东西。虽然我的 EC2 实例确实有一个 AMI ID:
realm-object-server-hvm-20170309 (ami-d518b9c3)。所以也许我做到了。 - 我的密钥对在我的 HD 上一个安全的地方,我想我在某些时候用过它……但我不记得了。
- 我想我在某些时候使用了我的公共 DNS...但我不记得了。
我记得的是:
- 我没有将 CocoaPods 用于任何事情。我拖入了 Realm 框架并做了
import RealmSwift(尽管我已经安装并使用了 CocoaPods 来做其他事情,并且可以将这些项目转换为使用 CocoaPods) - 在instructions to install Realm Object Server 中,我唯一做的就是安装macOS 包并运行
start-object-server.command来启动服务器。在那之后我什么也没做。没有配置或安全组或任何东西。我没有做任何这些,因为我是一个相对的初学者,如果有的话,我大部分都不懂(用 swift 做得很好,但所有这些终端代码和服务器的东西通常都在我头上)。例如,我不太了解“强制设置”部分的任何内容,例如如何在配置文件中指定设置,或者如何将它们作为命令行参数提供。 - 同样,我不清楚何时需要在终端中运行服务器。我今天才意识到
localhost:9080有时不起作用的原因是因为我没有运行服务器。
我确信我做错了很多事情,但奇怪的是,这一切都过去了,即使我可能做错了或遗漏了所有事情。我希望有人能帮帮忙。非常感谢。
PS。当我尝试以各种方式访问我的领域时,领域浏览器的行为如下:
(您可以通过我正在尝试的选项的数量看到,我真的不知道我应该使用哪个/哪个。同样,其中一个在过去有效,但我不知道不记得是哪个了)
打开同步 URL,realm://XX.YYY.ZZZ.AA:9080/~/ 提供“请提供有效凭据以访问此领域”对话框。而且我非常确定我输入了正确的凭据。
打开同步 URL,http://XX.YYY.ZZZ.AA:9080/~/ 禁用“连接”按钮
连接到对象服务器,realm://XX.YYY.ZZZ.AA:9080/ 给出“无法连接到服务器。”
连接到对象服务器,http://XX.YYY.ZZZ.AA:9080/ 禁用“连接”按钮
【问题讨论】:
标签: swift amazon-ec2 realm