0

最近、よく質問されます ;)
それで、Web チャットの作成を少し進めました。

それで私はそれを機能させました、
私の質問は、テキストエリアに何かを入力する方法でした.クリックするとメッセージがサーバーにログインされますか?

コードを更新したので、動作します。

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)に、データをリクエストに追加できる を使用してください。参照: 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);

HTH

于 2013-02-16T16:16:44.177 に答える