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”页面。

1

 

第二,下载服务器扩展包。

2

 

第三,解压文件,安装命令行工具。

$ 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!

发表评论