虽然用文本格式来通信比较昂贵,但是如今这方面的费用越来越便宜。应该在游戏这样数据量很大的应用中使用二进制数据进行通信,而在普通 WEB 应用中使用文本格式的数据来通信。在架构中应该尽量使用 JSON 而不是 XML 作为通信协议。

用 JSON 作为文本通信格式有很多好处:

JSON 就是 Javascript 中的一个对象,很容易把一个 JS 对象转换成 JSON 格式的数据

在JS 中进行对象和 JSON 的转换:

var myJSONText = JSON.stringify(myObject, replacer);
var myObject = eval('(' + myJSONtext + ')');

在 jQuery中进行对象和 JSON 的转换:

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

用 JSON-RPC 替代 XML-RPC 通常会把数据减小到 30% 左右

JSON-RPC 请求的例子

Client: { "method": "echo", "params": ["blog.eood.cn", "Hello JSON-RPC"], "id": 1}
Server: { "result": "Hello JSON-RPC", "error": null, "id": 1}

nodeJS 中对 JSON-RPC 做了支持

见 https://github.com/ericflo/node-jsonrpc

在 nodeJS 中创建 JSON-RPC 的服务端

var rpc = require('jsonrpc');
function add(first, second) {
    return first + second;
}
rpc.expose('add', add);
rpc.listen(8000, 'localhost');

在 nodeJS 中创建 JSON-RPC 的客户端

var rpc = require('jsonrpc');
var sys = require('sys');
var client = rpc.getClient(8000, 'localhost');
client.call('add', [1, 2], function(result) {
sys.puts('1 + 2 = ' + result);
});

PHP 中也有支持 JSON-RPC 的类库

见 http://www.jsonrpcphp.org/?page=example&lang=en

关于 JSONP

JSONP 是跨域 AJAX 通信的方式

jQuery 做 JSONP 请求和普通 AJAX 请求几乎一致

$.ajax({
    url: "http://blog.eood.cn/jsonp.json",
    dataType: 'jsonp',
    success: function(results){
       ...
    }
});

 

推荐这些相关文章

订阅这个博客:

关注我的微博:

关注我的推特: