用CppCMS实现web site并同时支持json_rpc服务
来源:互联网 发布:单机优化神作 编辑:程序博客网 时间:2024/06/02 04:16
刘怀宇
1.将cppcms-0.99.10/examples/json_rpc/rpc.cpp文件中的json_service类拷贝到
examples/templates/hello-tmpl.cpp 中
2.修改hello-tmpl.cpp 中的main函数,添加两个服务
int main(int argc,char ** argv){ try { cppcms::service srv(argc,argv); srv.applications_pool().mount(cppcms::applications_factory<my_hello_world>() , cppcms::mount_point(std::string("/html")) );srv.applications_pool().mount(cppcms::applications_factory<json_service>() , cppcms::mount_point(std::string("/jsonrpc")) ); srv.run(); } catch(std::exception const &e) { std::cerr<<e.what()<<std::endl; }}
3.修改config.js 文件,添加 script_names : /jsonrpc , /html
{ "service" : {"api" : "http","port" : 8080 }, "http" : {"script_names" : ["/jsonrpc","/html"] }}
4.在first.tmpl 中使用如下的html文本 替换掉原来的html
<html><body><script type="text/javascript">function call() { var xhr = new XMLHttpRequest(); xhr.open("post", 'http://localhost:8080/jsonrpc'); // Required by JSON-RPC over HTTP xhr.setRequestHeader("Content-Type","application/json"); // It is better to use real formatter like JSON.js x=parseInt(document.getElementById('x').value); y=parseInt(document.getElementById('y').value); var request = '{"method":"div","params":[' + x + ',' + y +'],"id":1}'; xhr.onreadystatechange = function() { if (xhr.readyState === 4) { res = 'Unknown Error'; if(xhr.status === 200) { // Don't call eval in real code use some parser var result = eval('(' + xhr.responseText + ')'); if(result.error==null) { res = result.result; } else { res = result.error; } } document.getElementById('result').innerHTML = res; } } xhr.send(request); return false;}</script><form onsubmit="return call();"><p><input type="text" id="x" /><input type="submit" value="/" /><input type="text" id="y" /> = <span id="result"></span></p></form></body></html>
5.make
6. 执行生成的hello-tmpl ./hello-tmpl -c config.js
7. 访问http://localhost:8080/html 在返回的html页面中计算除法,即可成功访问后台的json服务,得到结果
8.注意,IE6不支持JSON_RPC技术。
- 用CppCMS实现web site并同时支持json_rpc服务
- 使用cppcms开发JSON_RPC服务:高级用法
- CppCMS支持文件上传
- CppCMS — C++ Web Framework
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 用php实现文件下载, 同时支持下断点形式
- web site.
- web site
- web site
- 一台服务器实现nginx代理负载均衡同时使用web服务
- nginx 同时静态下载和web服务
- twitter将支持web服务
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
- 将Java算法通过axis2发布为web服务,并进行服务调用的实现
- 杂项13
- RX_CONTEXT数据结构
- 如何获取http请求的应答
- 联盟广告回利模式4种
- 解决IE6 IE8下div固定高度和自动延伸高度的办法
- 用CppCMS实现web site并同时支持json_rpc服务
- memcached之理解memcached的内存存储
- tomcat多个部署防止端口冲突
- ARM启动程序需要完成的工作
- C语言拾遗
- 最大堆和堆排序
- JQuery技巧集锦
- 寻找子串
- Linux小技巧收集