createserver例子,createServer
http.createServer amp;express.createServer有区别吗
var express = require('express'),
path = require('path'),
http = require('http'),
io = require('socket.io'),
wine = require('./routes/wines');
var app = express();
app.configure(function () {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.bodyParser())
app.use(express.static(path.join(__dirname, 'public')));
});
var server = http.createServer(app);
io = io.listen(server);
io.configure(function () {
io.set('authorization', function (handshakeData, callback) {
if (handshakeData.xdomain) {
callback('Cross-domain connections are not allowed');
} else {
callback(null, true);
}
});
});
server.listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});
app.get('/wines', wine.findAll);
app.get('/wines/:id', wine.findById);
app.post('/wines', wine.addWine);
app.put('/wines/:id', wine.updateWine);
app.delete('/wines/:id', wine.deleteWine);
io.sockets.on('connection', function (socket) {
socket.on('message', function (message) {
console.log("Got message: " + message);
ip = socket.handshake.address.address;
url = message;
io.sockets.emit('pageview', { 'connections': Object.keys(io.connected).length, 'ip': '***.***.***.' + ip.substring(ip.lastIndexOf('.') + 1), 'url': url, 'xdomain': socket.handshake.xdomain, 'timestamp': new Date()});
});
socket.on('disconnect', function () {
console.log("Socket disconnected");
io.sockets.emit('pageview', { 'connections': Object.keys(io.connected).length});
});
});
这是一个例子,我没细看,你可以参考
nodejs 还是python?
这个关键取决你自身的基础条件和兴趣方向。
python是个比较成熟的跨平台的通用型脚本语言,有非常完善庞大的内置模块和第三方扩展模块。
python几乎什么都能干,但是自身性能较低。it自动化运维,网络爬虫,数据分析是优势的领域
node.js采用事件驱动、异步编程,为网络服务而设计
"node.js 是服务器端的 javascript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,node.js 采用 v8 引擎,同样,node.js 实现了类似 apache 和 nginx 的web服务,让你可以通过它来搭建基于 javascript 的 web app。"
c# Socket 多线程例子
以下为伪代码,未编译执行:
//继承Thread类
class CreateServerThread extends Thread {
private Socket client;
private BufferedReader in;
private PrintWriter out;
//生产实例时自动调用 CreateServerThread方法
public CreateServerThread(Socket s) throws IOException {
client = s;
in = new BufferedReader(new InputStreamReader(client.getInputStream(), "GB2312"));
out = new PrintWriter(client.getOutputStream(), true);
String RemoteIP = client.getInetAddress().getHostAddress();
String RemotePort = ":" + client.getLocalPort();
String dateTime = getCurrentDate();
logger.info("A client come in!IP:" + RemoteIP + RemotePort
+ " Time :" + dateTime);
out.println("Client's IP " + RemoteIP + RemotePort
+ " that visit Server at " + dateTime);
logger.info("A client come in!IP:" + RemoteIP + RemotePort
+ " Time :" + dateTime);
start(); //新启动一个线程调用run() 方法
}
//线程执行的run方法
public void run() {
try {
String strInput = in.readLine();
if(StringUtils.isBlank(strInput)){
client.close();
return;
}
String[] passwdAndExecute = strInput.split("@@@");
String line = passwdAndExecute[0];
logger.info(line);
logger.info("Client input: " + line);
logger.info("Client input: " + line);
String strRet;
out.flush();
logger.info("--- See you, bye! ---");
out.println("--- See you, bye! ---");
client.close();
input.close();
} catch (Exception e) {
logger.error("error:" + e.getMessage());
}
}
}
node.js createserver获取请求值
方法说明:
该函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数。
语法:
复制代码代码如下:
http.createServer([requestListener])
由于该方法属于http模块,使用前需要引入http模块(var http= require(“http”) )
接收参数:
requestListener 请求处理函数,自动添加到 request 事件,函数传递两个参数:
req 请求对象,想知道req有哪些属性,可以查看 “http.request 属性整合”。
res 响应对象 ,收到请求后要做出的响应。想知道res有哪些属性,可以查看 “http.response属性整合”。
例子:
例子中res指定了响应头,响应体内容为node.js,用end结束。
最后调用listen函数,监听3000端口。
复制代码代码如下:
var http = require('http');
http.createServer(function(req, res){
res.writeHead(200, {'Content-type' : 'text/html'});
res.write('h1Node.js/h1');
res.end('pHello World/p');
}).listen(3000);
源码:
复制代码代码如下:
exports.createServer = function(requestListener) {
return new Server(requestListener);
};
Nodejs乱码怎么解决
Node.js 支持中文不太好(实际上是Javascript支持),见《Node.js开发指南》。
要想Node.js正常显示中文,需要两点:
1、js文件保存为unicode格式。js文件是否为unicode格式,一个简单的方法是使用记事本来判断。使用记事本打开JS文件,点菜单另存为,看编码格式是否为"UTF-8"。若不是,可使用UltraEdit工具进行转换,使用记事本也可以转换。
2、在js文件中增加编码说明meta数据,让浏览器知道使用什么编码来解释网页。
两个条件缺一不可。
一个Node.js中使用中文的例子如下,该app.js需保存为utf-8格式,同时在文中增加meta编码数据说明:
[javascript]?view plain?copy
meta?charset="utf-8"/
[javascript]?view plain?copy
//app.js
var?http?=?require('http');
http.createServer(function(req,?res)?{
res.writeHead(200,?{'Content-Type':?'text/html'});
res.write('headmeta?charset="utf-8"//head');
res.write('h1Node.js/h1');
res.write('b亲爱的,你慢慢飞,小心前面带刺的玫瑰.../b');
res.end('pHello?World/p');
}).listen(3000);
console.log("HTTP?server?is?listening?at?port?3000.");