0

我最近问了很多问题;)
所以我在创建网络聊天方面取得了一些进展。

所以我让它工作了,
我的问题是,如何在 textarea 中输入一些东西,点击输入后,消息将登录到服务器?

我更新了代码,所以它可以工作。

node.js 文件 -

var http = require('http');
var fs = require('fs');
var path = require('path');

var messages = [];

// Simple Function to Load all of the HTML/CSS/JavaScript Files.
function LoadHTML(html, requrl, res) {
    var filePath = '.' + requrl;
    if (filePath == './') {
        filePath = './' + html;
    }

    var extname = path.extname(filePath);
    var contentType = 'text/html';
    switch (extname) {
        case '.js':
            contentType = 'text/javascript';
        break;
        case '.css':
            contentType = 'text/css';
        break;
    }

    fs.exists(filePath, function(exists) {

        if (exists) {
            fs.readFile(filePath, function(error, content) {
                if (error) {
                    res.writeHead(500);
                    res.end();
                }
                else {
                    res.writeHead(200, { 'Content-Type': contentType });
                    res.end(content, 'utf-8');
                }
            });
        }
        else {
            res.writeHead(404);
            res.end();
        }  
    });  
}

var server = http.createServer(function (req, res) {

    var url = req.url;

    LoadHTML('index.html', url, res);

    if(url.substring(0,16) == "/ser.js?message=") {
        var message = url.substring(16, url.length);
        console.log(message);
    }

}).listen(8125);

这是 HTML/CSS/JavaScript 代码 - http://jsfiddle.net/Q79PK/1/

编辑:我让它工作,我更新了代码,你可以看看和学习;)
投票会很棒!

4

1 回答 1

1

您不应该使用http.get(options, callback)它,因为它旨在执行没有数据的 HTTP GET。而是使用http.request(options, callback)where 您将能够向请求添加数据。请参阅:http ://nodejs.org/api/http.html#http_http_request_options_callback

对于在请求中发布的服务器端日志记录和处理数据,请将 netirereq对象作为 loadHTML 函数的参数(而不是req.url)。然后您将能够向 ServerRequest 添加一个侦听器:

req.addListener("data", function(data) {
    console.log("data : "+data);
});

(并var filePath = '.' + req;相应地更新为var filePath = '.' + req.url;)。

如果你有它,你可以通过使用 cURL 命令模拟请求来测试它:

curl -d "some data" http://localhost:8125

在服务器端,您有以下日志记录:

data : some data

这是我所做的代码的完整修改:

var http = require('http');
var fs = require('fs');
var path = require('path');

var messages = [];

// Simple Function to Load all of the HTML/CSS/JavaScript Files.
function LoadHTML(html, req, res) {
    var filePath = '.' + req.url;
    if (filePath == './') {
        filePath = './' + html;
    }

    req.addListener("data", function(data) {
        console.log("data : "+data);
    });

    var extname = path.extname(filePath);
    var contentType = 'text/html';
    switch (extname) {
        case '.js':
            contentType = 'text/javascript';
        break;
        case '.css':
            contentType = 'text/css';
        break;
    }

    fs.exists(filePath, function(exists) {

        if (exists) {
            fs.readFile(filePath, function(error, content) {
                if (error) {
                    res.writeHead(500);
                    res.end();
                }
                else {
                    res.writeHead(200, { 'Content-Type': contentType });
                    res.end(content, 'utf-8');
                }
            });
        }
        else {
            res.writeHead(404);
            res.end();
        }  
    });  
}

var server = http.createServer(function (req, res) {
    LoadHTML('./index.html', req, res); // Calling the Function to load all of the files.
}).listen(8125);

高温高压

于 2013-02-16T16:16:44.177 回答