目录

做一个服务器 服务器用什么浏览器

浏览器的边界远超我们的想象,我们用了55行JavaScript代码实现了一个基于浏览器的服务器。 实现的效果如下: 1、打开链接,将返回json数据2、用js请求,也可以得到json说明一下,我们将我们的浏览器服务器api后缀名设为:.jserve,server.jserve的主要结构如下:<!DOCTYPE html>...

做一个服务器  服务器用什么浏览器

浏览器的边界远超我们的想象,我们用了55行JavaScript代码实现了一个基于浏览器的服务器。

实现的效果如下:

1、打开链接,将返回json数据

2、用js请求,也可以得到json说明一下,我们将我们的浏览器服务器api后缀名设为:.jserve,server.jserve的主要结构如下:<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script id="server" type="text/javascript"> (function server(params) { params = params || {}; params.outReq = params.outReq || false; var ret = { a: name } if(params.outReq) { document.write(JSON.stringify(ret)); } return ret; })({outReq: true}) </script> </body> </html>

使用html是为了能够显示文本内容。其中server函数只在用浏览器打开网页时使用document.write将数据写回浏览器,其它情况下直接return真实的数据,用outReq标注,默认为假。

调用server.jserve的代码如下:

<!doctype html> <html> <head> <meta charset="utf-8"> <title>开个脑洞:用浏览器做服务器</title> </head> <body> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script> (function () { var fetchFromBrowser = function(url, success, error) { fetch(url).then(function(response) { response.text().then(function(data) { var parseServer = function() { var scripts = $($(data)[3]).html(); return scripts; }, evalServer = function(params) { var d = parseServer(), res; d = d.replace(({outReq: true}), ( + JSON.stringify(params) + )); res = eval(d); return res; }, result = evalServer(); success(response, result); }).catch(function(error) { error(success); }); }); } fetchFromBrowser(./server.jserve, function(response, result) { console.log(response, result); }) })(); </script> </body> </html>

我们完成了一个函数fetchFromBrowser,此函数主要做了以下几件事:

1、使用ajax请求server.jserve文件,得到所有文本;

2、分离server.jserve中的html文本,拿到js代码;

3、重新拼凑server.jserve中的js代码,替换({outReq: true})为用户自己的参数,使server函数知道自己即将被从js调用;

4、使用eval执行拼凑之后的代码,eval将返回server函数的返回值;

5、回调给用户http信息和数据信息。

完成这5个步骤后,我们的小程序就完成了,不过这真的太简单了,没用promise、没有路由处理,没有中间件,也没有数据库查询,也谈不上任何的模式设计,还要继续完善。

那么基于浏览器的服务器有没有什么应用场景呢?

设想一下,将每个打开网页的人都作为一个计算节点,发挥大量客户端计算资源的优势,只要有大量流量,就可以源源不断的向中央服务器传输计算结果,私以为,这是一个激动人心的事情。

我们有必要重新重视起来客户端的计算力量。

代码在github上有:leinue/javascript

扫描二维码推送至手机访问。

本文转载自互联网,如有侵权,联系删除。

本文链接:https://www.idc.ke/8005

发布评论

您暂未设置收款码

请在主题配置——文章设置里上传

扫描二维码手机访问