HonestQiao 发表于 2022-7-3 15:14

【国产RISC-V Linux板 昉·星光VisionFive试用报告】星光板上的nodejs开发2:web服务器

<p>再上一篇文章中,分享了星光板上基础的nodejs开发,实现了用nodejs控制LED闪烁。</p>

<p>这一次,再分享,在星光板上建立一个 基础的web服务,并通过web服务,来控制LED。</p>

<p>&nbsp;</p>

<p>首先,nodejs自带了http模块,通过该模块,就能建立http服务端,对外提供web服务;也可以建立http客户端,获取其他web服务器提供的数据。</p>

<p>通过查看nodejs官方http的文档:<a href="http://nodejs.cn/api/http.html">http 超文本传输协议 | Node.js API 文档 (nodejs.cn)</a></p>

<p>了结了 nodejs的http的开发资料,并编写如下的程序:</p>

<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code class="language-javascript">var http = require('http');
var fs = require('fs');
var url = require('url');


// 创建服务器
http.createServer( function (request, response) {
   // 解析请求,包括文件名
   var pathname = url.parse(request.url).pathname;
   
   // 输出请求的文件名
   console.log("Request for " + pathname + " received.");
   
   response.writeHead(404, {'Content-Type': 'text/html'});
   response.write(pathname);
   response.end();

}).listen(8080);

// 控制台会输出以下信息
console.log('Server running at http://*.*.*.*:8080/');</code></pre>
</div>

<p>&nbsp;</p>

<p>将上述代码保存为web_server.js,然后使用nodejs执行:</p>

<p>&nbsp;执行后,显示 &ldquo;Server running at http://*.*.*.*:8080/&rdquo; 表示可以访问了 。</p>

<p>&nbsp;</p>

<p>然后访问如下的网址:(IP请根据自己开发板实际获取的设定)</p>

<p> &nbsp;</p>

<p>&nbsp;可以看到,该web server能够收到我们的请求。</p>

<p>&nbsp;</p>

<p>然后,我们可以结合之前nodejs控制LED的分享,实现通过网页,来控制LED:</p>

<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code class="language-javascript">var http = require('http');
var fs = require('fs');
var url = require('url');

const Gpio = require('onoff').Gpio;
const led = new Gpio(448, 'out');

// 创建服务器
http.createServer( function (request, response) {
   // 解析请求,包括文件名
   var pathname = url.parse(request.url).pathname;
   
   // 输出请求的文件名
   console.log("Request for " + pathname + " received.");
   
   if(pathname=="/on") {
    led.write(1);   
   } else if(pathname=="/off") {
    led.write(0);
   }
   response.writeHead(404, {'Content-Type': 'text/html'});
   response.write(pathname);
   response.end();

}).listen(8080);

// 控制台会输出以下信息
console.log('Server running at http://*.*.*.*:8080/');</code></pre>
</div>

<p>&nbsp;</p>

<p>将上述代码保存为web_led.js,然后执行:</p>

<p> &nbsp;</p>

<p>再访问/on和/off对应的网址,LED就能通过网页控制了。</p>

<p>&nbsp;</p>

<p>参考类似的方法,你还可以学习控制其他类型的外设,以及读取显示数据了</p>

Jacktang 发表于 2022-7-3 21:54

<p>在星光板上建立一个 基础的web服务通过web服务来控制LED,学习了</p>
页: [1]
查看完整版本: 【国产RISC-V Linux板 昉·星光VisionFive试用报告】星光板上的nodejs开发2:web服务器