Kii BLOG
使用Kii Cloud发布基于node.js的HTML5和手机应用
使用Kii Cloud发布基于node.js的HTML5和手机应用
Why?
移动互联网开发者一直无法回避三个问题:众多服务器端可选技术,每种技术都有自己的full stack;部署在哪里,能否支持大访问量;服务是否可靠,会不会每天宕机,为此需要付出多少成本。
Node.js的出现给了移动互联网从业者一些新鲜空气,毕竟,如果客户端和服务器端都可以用耳熟能详的Javascript开发,学习曲线会稍微平坦一些。即便对于从未见过Javascript的Android Java开发者和iOS Objective C开发者来说,Javascript也很容易上手。而且,node.js基于event驱动的IO技术,天生就为承载大访问量做了优化。一旦花两三天摆弄摆弄node.js,移动开发者就很有机会扩展他们 的app,捕捉更多市场机会。当然,本篇并不打算详细介绍node.js,有兴趣的读者可以参考我们列出的学习资料。
有了服务器代码,放在哪里运行也是一个头疼的问题。先看看有哪些选择吧。
一, 独立服务器。如果一上路就用独立服务器,你的苦日子就来了。首先,你要从众多正卡的代理公司和山寨的二手三手代理商中作出选择,通过谁帮你把机器上架。这意味着和对方销售数不清的电话和邮件,痛苦的过程暂且不表。同时,你还需要了解很难了解的硬件参数,比如某个硬盘的转速。不要小看一个数字的区别,对你来说每个月可能会有几百块成本的出入。好不容易等到服务器上架,你还要担心机器是否稳定,硬盘会不会爆掉,很有可能某个半夜三点你的服务就宕了,修好后隔了一天又不行了。此外,在中国,拥有一台独立服务器还需要一些额外的工作,谁让你是这台机器的owner呢。
二,虚拟主机,也就是vps。说实话,在中国很难找到价廉物美的vps服务,因为这个市场上大家都喜欢对流量收费,而且不便宜。你的服务还没起色,成本就开始飙升,宝贵的时间只能用来解决称不上商业核心的问题。到那个时候,vps销售就会主动找你卖他们的独立主机了。
三,云服务。听起来很 cool,你可能已经听过一堆名字,比如GAE,Parse等。确实,云服务,更精确点,所谓的Paas平台,有很多的优点。比如,你再也不用半夜三点起来照顾你的服务。但是很快,你会体会到,由于大多数云服务都在国外,很难保证他们某天早上就不能访问了。到那个时候,追悔莫及吧。
好了,说了那么多,其实需求很简单,广大移动玩家需要一个纯正运行在国内的,不会半夜三点叫你起来的,而且不会按照字节流量扣你钱的服务。是不是这样?如果你对上述问题已经心领神会,自然会同意这个观点。而我们在此篇要介绍的 Kii Cloud正是符合这种需求的解决方案。
Kii Cloud提供了诸多功能。它是针对移动互联网特别优化过的Paas,或者称作Mbaas, Mobile Backend as a Service。除了标准云服务提供的那些特性以外,Kii Cloud天生为了服务Android,iOS和HTML5三类玩家,标准的SDK中提供了所有日常开发能用到的功能。今天我们并不详细展开,只说服务器扩展。
How?
看到这里,想必你已经摩拳擦掌。说实话,要做的事情还真不多,跑通一个例子十分钟就够了。
开始前,先去https://developer.kii.com/login拿个帐号,免费的。
整个操作过程就三步:
- 写服务器端js代码
- 把代码放到Kii Cloud上
- 运行、使用
我们假设您可以读懂一些基本的Javascript。同步通讯的代码看起来是这个样子的:
function main(params,context) { if (conyext.getAccessToken()) { return "The Code invoked by a logged-in user!"; } else { return "The Code invoked by an anonymous user"; } }
这句话调用了getAccessToken方法,取得登录用户token。
异步调用的方式是这样的:
function main(params,context,done) { Kii.initializeWithSite(context.getAppID(), context.getAppKey(), KiiSite.US); var user = KiiUser.userWithUsername(params.username, params.password); user.register({ success: function(user) { done(user.getUsername()); }, failure: function(user,errorString) { done(errorString); } }); }
先初始化Kii代码库,用initializeWithSite。然后定义一个User对象,呼叫register异步方法建立该用户。如果呼叫成功,系统将调用success这段,否则当然是failure这段。
以上两段代码用了整个Kii Cloud JS开发包的冰山一角。当您真正开始使用它的时候,就能体验到它的强大,什么帐户管理啦,云存储啦,支付啦,都是秒杀的。您可以此刻就打住,跳到Kii Cloud的文档中看一看:http://documentation.kii.com/cn/guides/javascript/。当然,接着看下去更自然一些,文档以后随时可以查阅。
有了代码,就要放到cloud上。这些工作涵盖了您原本需要寻找服务器托管商,选择硬件配置,联系销售,种种种种。。的所有努力。而且,不用付钱。
第一,进入Kii Cloud管理系统的“SDK”页面。
第二,下载服务器扩展包。
第三,解压文件,安装命令行工具。
$ cd kii-servercode-v1.2.3 $ npm install
第四,部署代码。
node bin/kii-servercode.js deploy-file \ --file ../demo.js \ --site us \ --app-id <your_app_id> \ --app-key <your_app_key> \ --client-id <your_client_id> \ --client-secret <your_clint_secret>
其中,–file参数是您需要部署到cloud上的js文件。其他都是您的帐户信息。
稍等片刻,您的代码就上去了,简单吗。
假设您的代码是main.js,您可以通过以下URL访问您的服务:
https://api.kii.com/api/apps/{APP_ID}/server-code/versions/current/main
看个完整的例子。假如您的代码是:
function main(params,context,done) { Kii.initializeWithSite(context.getAppID(), context.getAppKey(), KiiSite.US); var user = KiiUser.userWithUsername(params.username, params.password); user.register({ success: function(user) { done(user.getUsername()); }, failure: function(user,errorString) { done(errorString); } }); }
上传后,您通过curl访问这个服务:
curl -v -X POST -H "content-type: application/json" \ -H "Authorization: Bearer {ACCESS_TOKEN}" \ -H "x-kii-appid:{APP_ID}" \ -H "x-kii-appkey:{APP_KEY}" \ -d '{"username":"name_of_my_friend","password":"password_for_my_friend","https://api.kii.com/api/apps/{APP_ID}/server-code/versions/current/main"}'
得到的结果是:
< HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < Access-Control-Allow-Origin:* < X-Step-count:3 < Content-Length:27 < Accept-Ranges:bytes < Date: Tue,23 Jul 2013 03:57:28 GMT < X-Varnish: 1572330455 < Age: 0 < Via: 1.1 varnish < * Connection #0 to host js-box-tmp.internal.kii.com left intact {"returnedVale":"new_username_created"} *Closing connection #0
麻雀虽小,整个服务的开发、部署、测试也就这些步骤了。
其它种种
Kii Cloud提供了丰富的接口,让您查询服务器端代码的版本,删除一个服务器端代码,或者下载代码到您本地电脑。这些工具应对日常使用绰绰有余了。
我们谈过,云服务有很多,但大部分都在海外。作为本土运营的Kii Cloud,网速方面有无法超越的优势。ping值在40ms左右,很稳定。如果您的用户有时失去wifi或3G连接,只能用2G时,就会明白此种好处。
价格呢?
假如您的作品暂时没有进 Top 100,每年最多也就一千多人民币吧。对于任何层次的选手,Kii Cloud都是不错的起步方式。
本篇先聊到这里,happy hacking!