我有一个简单的node.js程序在我的机器上运行,我想获得运行我程序的PC的本地IP地址.我如何使用node.js获取它?
我试图在nodejs中创建一个静态文件服务器,作为理解节点而不是完美服务器的练习.我非常了解Connect和node-static等项目,并且完全打算将这些库用于更多生产就绪的代码,但我也想了解我正在使用的基础知识.考虑到这一点,我编写了一个小型server.js:
var http = require('http'),
url = require('url'),
path = require('path'),
fs = require('fs');
var mimeTypes = {
"html": "text/html",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"png": "image/png",
"js": "text/javascript",
"css": "text/css"};
http.createServer(function(req, res) {
var uri = url.parse(req.url).pathname;
var filename = path.join(process.cwd(), uri);
path.exists(filename, function(exists) {
if(!exists) {
console.log("not exists: " + filename);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('404 Not Found\n');
res.end();
}
var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
res.writeHead(200, mimeType);
var fileStream = fs.createReadStream(filename);
fileStream.pipe(res);
}); //end path.exists
}).listen(1337);
Run Code Online (Sandbox Code Playgroud)
我的问题是双重的
这是在节点中创建和流式传输基本html等的"正确"方法,还是有更好/更优雅/更健壮的方法?
节点中的.pipe()基本上只是执行以下操作吗?
.
var …Run Code Online (Sandbox Code Playgroud) 这是我的代码使用socket.io作为WebSocket和后端与pub/sub redis.
var io = io.listen(server),
buffer = [];
var redis = require("redis");
var subscribe = redis.createClient(); **<--- open new connection overhead**
io.on('connection', function(client) {
console.log(client.request.headers.cookie);
subscribe.get("..", function (err, replies) {
});
subscribe.on("message",function(channel,message) {
var msg = { message: [client.sessionId, message] };
buffer.push(msg);
if (buffer.length > 15) buffer.shift();
client.send(msg);
});
client.on('message', function(message){
});
client.on('disconnect', function(){
subscribe.quit();
});
});
Run Code Online (Sandbox Code Playgroud)
每个新的io请求都将创建新的redis连接.如果有人用100个标签打开浏览器,那么redis客户端将打开100个连接.它看起来不太好看.
如果cookie相同,是否可以重用redis连接?因此,如果有人打开许多浏览器标签,也将其视为开放1连接.
当我分叉已经包含gh-pages分支的repo时,我的帐户中的github页面是否自动创建?
是否还有其他backbone.js教程或初学者学习资源,而不是Introduction或Hello backbone.js?
使用websocket连接时,对用户进行身份验证的可能方法有哪些?
示例场景:通过加密websocket连接的基于Web的多用户聊天应用程序.如何确保(或保证)此应用程序中的每个连接都属于某个经过身份验证的用户,并且在连接期间由于虚假用户模拟而"无法"利用该连接.
假设我有一个对象(User),它包含一些属性(ID,Name,Surename,Age).哪个方法最好将此对象存储在redis中?
我打算创建一个基于WebGL的实时战略游戏,让玩家可以一起玩.我将使用Node.js创建游戏服务器,并使用websockets实现实时连接.
我已经打破了关于同步客户端的最佳概念的想法.
一种可能性是仅将用户的订单(移动单元,建筑物等)发送到服务器,服务器将它们发送给所有其他客户端.但在这里,我有延迟的问题.我认为游戏会以这种方式变得异步.
另一种可能性是在服务器上制作游戏.客户端仍然将指令发送到服务器,但服务器现在将所有单元和建筑物的所有已更改状态发送到客户端的间隔很长.这里的问题是数据量大,速度有多快......
您有其他想法或改进建议吗?
谢谢!
有没有办法在backbone.js中触发相同的位置路由,例如当位置/My/App/#/About和用户再次使用相同的路径点击锚点以刷新页面内容时.