opencpu.js请求我自己安装的opencpu?

时间:2013-10-20 00:08:36

标签: r opencpu

在Ubuntu上使用我自己的OpenCPU安装是否可以使用opencpu.js?我已经快速扫描了代码,无法看到我在哪里设置主机名。

1 个答案:

答案 0 :(得分:1)

编辑:此功能在opencpu.js 0.3中得到了改进。您现在可以使用`opencpu.seturl()设置opencpu服务器的路径。参数必须指向包,例如:

opencpu.seturl("/ocpu/library/mypackage/R")

或者如果您的浏览器支持CORS,您可以这样做:

opencpu.seturl("//public.opencpu.org/ocpu/library/mypackage/R")

opencpu.seturl("//public.opencpu.org/ocpu/github/yourname/yourpackage/R")

设置完成后,客户端将检查此服务器是否在线并将一些调试内容打印到javascript控制台。如果一切正常,您可以使用该库,就像它是应用程序的一部分一样。请查看http://www.stat.ucla.edu/~jeroen/appdemo/以了解此情况。

也就是说,opencpu.js库旨在包含在应用中。 OpenCPU应用程序是一个R包,其中包含一些使用OpenCPU API调用包中R函数的网页。

由于应用程序是安装在OpenCPU服务器上的R软件包,因此opencpu.js库假定服务器正在当前主机上运行,​​并使用相对路径来调用服务器。此外,由于opencpu.js包含在特定的R包中,opencpu.js中的函数没有参数来指定包:它假设您正在调用R函数 current 包裹。

这可能听起来有点令人困惑,但相对路径对于保持应用程序的可移植性非常重要。例如,相同的应用程序应该工作,无论它是否托管为:

https://public.opencpu.org/ocpu/gitstats/www
https://public.opencpu.org/ocpu/github/SChamberlain/gitstats/www/
https://public.opencpu.org/ocpu/user/jeroen/library/gitstats/www/

这种设计的一大优势是您的R包将是一个独立的独立应用程序,只需安装包即可在任何地方部署。这可以防止跨域请求和软件版本控制带来很多麻烦。由于您的网页和R功能是同一个软件包的一部分,因此您可以确保js和R代码包含兼容版本。如果你要在一个单独的服务器上托管js,那么在安装新版本的R软件包时可能会破坏。

或许最好的入门方式是查看其中一个public apps。 opencpu github repo上提供了这些应用的源代码,每个应用都建立在opencpu.js库上。