繁体   English   中英

本地node.js服务器和python简单http服务器之间有什么区别

[英]What's the differences between a local node.js server and a python simple http server

我正在尝试在本地构建D3.js图表​​。 因此,我的csv文件和index.html位于桌面上的同一文件夹中。 当我运行python本地服务器时,一切运行正常,但是当我运行node.js服务器时,则使用以下代码:

var http = require('http');

var server = http.createServer(function(request, response)
    {
        console.log('test');
        response.write('test');
        response.end();
    });

server.listen(8000);

它不起作用。

所以我的问题是:python本地服务器和node.js本地服务器之间有什么区别。 我应该怎么做才能使我的node.js本地服务器像我的python本地服务器一样工作?

使用快递

您的节点中的服务器是正确的,但是它将始终将响应作为test发送。 由于需要提供项目的静态文件,因此可以使用express。

server.js

var express = require('express');
var app = express();
app.use(express.static('public'));
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

假设文件放在名为public的文件夹中。 并具有类似的结构。

|package.json
|server.js
|public
  - files 

python SimpleHTTPServer之所以有效,是因为它托管了当前目录(无论从何处唤起)

如果您不想使用express ,则可以使用纯node.js创建它。 这是我发现有用的要点链接

var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs")
    port = process.argv[2] || 8888;

http.createServer(function(request, response) {

  var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);

  path.exists(filename, function(exists) {
    if(!exists) {
      response.writeHead(404, {"Content-Type": "text/plain"});
      response.write("404 Not Found\n");
      response.end();
      return;
    }

    if (fs.statSync(filename).isDirectory()) filename += '/index.html';

    fs.readFile(filename, "binary", function(err, file) {
      if(err) {        
        response.writeHead(500, {"Content-Type": "text/plain"});
        response.write(err + "\n");
        response.end();
        return;
      }

      response.writeHead(200);
      response.write(file, "binary");
      response.end();
    });
  });
}).listen(parseInt(port, 10));

console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

您正在完全尝试两种不同的方法,python和node都打开套接字并监听http通信,但是,node需要以下配置:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

然后从命令行:

node example.js

简而言之,这两个脚本都创建了一个监听连接的套接字,我什至鼓励您同时运行它们,以便您了解正在发生的事情。

Python HTTP使用python库进行创建和侦听,而node使用不同的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM