我无法在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.}
我也无法使用Realm浏览器登录我的同步域,但我可以从iOS模拟器中打开本地(非同步)域。我正在运行最新版本的Realm Browser。
奇怪的是,大约一周前我能够使用我的应用程序和浏览器连接到EC2领域,以及另一个与领域同步的应用程序。我比较了代码,它们基本相同 - 我发现的任何差异我都非常有信心他们不重要(而且我试过改变一些事情回来,无济于事。)
自从它工作以来,我已经安装了最近的macOS更新,以及Realm 2.5更新。我对领域更新遇到了一些麻烦,最后安装并重新安装了几次,但我相信它能够正常工作,再次使用最新版本的所有内容。我不认为我改变了其他任何东西,我不记得了。
不幸的是,我实际上不记得我设置EC2服务器的过程 - 即:
realm-object-server-hvm-20170309 (ami-d518b9c3)
。也许我做了。我记得的是:
import RealmSwift
(虽然我已经安装并使用CocoaPods用于其他事情,并且很好地将这些项目转换为使用CocoaPods)start-object-server.command
来启动服务器。我没有做过任何事情。没有配置或安全组或任何东西。我没有做任何这些,因为我是相对初学者而且我不了解最多,如果有的话(做得很好,但是所有这些终端代码和服务器的东西一般都是我的头)。例如,我并不真正了解任何"强制性设置"部分,如何在配置文件中指定设置,或如何将它们作为命令行参数。localhost:9080
有时无效的原因是因为我没有运行服务器。我确定我做了很多错事,但奇怪的是,这一切都过去了,即使我可能做错了所有的事情或遗漏了我希望有人能帮帮忙。非常感谢。
PS。以下是我尝试以各种方式访问我的领域时领域浏览器的行为:
(你可以通过我尝试的选项数量来看,我不知道哪个是哪个/我应该使用哪个。再次,其中一个在过去,但我不记得哪个)
打开同步网址,realm://XX.YYY.ZZZ.AA:9080/~/
提供"请提供有效的凭据以访问此域名"对话。而且我非常确定我输入了正确的凭证。
打开同步网址,http://XX.YYY.ZZZ.AA:9080/~/
离开" Connect"按钮已禁用
连接到对象服务器,realm://XX.YYY.ZZZ.AA:9080/
给出"无法连接到服务器。"
连接到对象服务器,http://XX.YYY.ZZZ.AA:9080/
离开"连接"按钮已禁用
答案 0 :(得分:1)
我已经运行了EC2实例。我跑了
start-object-server.command
。
start-object-server.command
用于运行Realm Object Server的本地实例;可通过http://localhost:9080访问的。您可能需要小心,因为如果您在本地运行本地ROS实例,并尝试在AWS上远程连接到一个实例,则可能会对您最终与之通信的服务器存在一些混淆。 :)
我已粘贴了
setupRealm()
方法的代码。
该代码看起来正确。请记住,如果您运行start-object-server.command
,您将自动获得ROS的localhost
实例,因此目前您的EC2实例上不会存在这些凭据。
我也无法使用Realm浏览器登录我的同步域,但我可以从iOS模拟器中打开本地(非同步)域。我正在运行最新版本的Realm Browser。
这是正常行为。您可以在浏览器中打开本地Realm文件,但对于使用Realm Mobile Platform创建的文件,您需要连接到它们;你无法直接打开它们。如果您无法连接到Realm,则表示Realm Mobile Platform未运行,或者未正确配置正确的URL。
我有一个设置我自己的EC2实例的游戏,我让它按预期工作。您可以判断它是否正常工作,因为您应该可以使用端口9080导航到公共DNS URL,并查看Realm Mobile Platform仪表板登录页面。 (例如' http://ec2-00-000-000-00.compute-1.amazonaws.com:9080')。
在设置EC2实例时,可能还没有安装Realm Mobile Platform本身。如果是这种情况,您可以通过SSH连接到您的实例并运行Ubuntu安装脚本来轻松手动安装RMP:
# Setup Realm's PackageCloud repository
curl -s https://packagecloud.io/install/repositories/realm/realm/script.deb.sh | sudo bash
# Update the repositories
sudo apt-get update
# Install the Realm Object Server
sudo apt-get install realm-object-server-developer
# Enable and start the service
sudo systemctl enable realm-object-server
sudo systemctl start realm-object-server
但问题的关键在于您需要确认您可以访问EC2上的Realm Mobile Platform仪表板,以确认对象服务器确实正在运行,并且您已设置正确的凭据。祝你好运!