我最近问了很多问题;)
所以我在创建网络聊天方面取得了一些进展。
所以我得到了它的工作,
我的问题是,如何在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/
编辑:我让它工作,我更新了代码,你可以查看和学习;)
投票会很棒!
答案 0 :(得分:1)
您不应该使用http.get(options, callback)
,因为它旨在执行没有数据的HTTP GET。
而是使用http.request(options, callback)
,您可以在其中向请求添加数据。请参阅:http://nodejs.org/api/http.html#http_http_request_options_callback
对于服务器端日志记录和处理请求中发布的数据,使netire req
对象成为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