有没有比process.cwd()更好的方法来确定正在运行的node.js进程的根目录? 就像Rails.root的等价物,但对于Node.js. 我正在寻找尽可能可预测和可靠的事情。
我正在尝试获取当前连接的所有套接字/客户端的列表。 不幸的是, io.sockets不返回数组。 我知道我可以保留我自己的列表使用数组,但不认为这是一个最佳的解决scheme有两个原因: 冗余。 Socket.IO已经保存了这个列表的副本。 Socket.IO提供了为客户端设置任意字段值的方法(即: socket.set('nickname', 'superman') ),所以我需要跟上这些变化,如果我要维护自己的列表。 帮帮我?
有没有Node.js准备使用的工具(与npm安装),这将帮助我公开的文件夹内容作为文件服务器通过HTTP。 例如,如果我有 D:\Folder\file.zip D:\Folder\file2.html D:\Folder\folder\file-in-folder.jpg 然后从D:\Folder\ node node-file-server.js我可以通过访问文件 http://hostname/file.zip http://hostname/file2.html http://hostname/folder/file-in-folder.jpg 为什么我的节点静态文件服务器丢失请求? 参考一些神秘的 标准的node.js静态文件服务器 如果没有这样的工具,我应该使用什么框架? 相关: NodeJS中的基本静态文件服务器
2 Meteor.Collections是否有可能从2个不同的mongdb数据库服务器中检索数据? Dogs = Meteor.Collection('dogs') // mongodb://192.168.1.123:27017/dogs Cats = Meteor.Collection('cats') // mongodb://192.168.1.124:27017/cats
我想使用标准的http.Client从node.js发出一个传出的HTTP调用。 但我无法直接从我的networking到达远程服务器,需要通过代理。 如何告诉node.js使用代理?
我试图让我的SSL证书运行socket.io但是,它不会连接。 我将我的代码从聊天示例中删除: var https = require('https'); var fs = require('fs'); /** * Bootstrap app. */ var sys = require('sys') require.paths.unshift(__dirname + '/../../lib/'); /** * Module dependencies. */ var express = require('express') , stylus = require('stylus') , nib = require('nib') , sio = require('socket.io'); /** * App. */ var privateKey = fs.readFileSync('../key').toString(); var certificate = fs.readFileSync('../crt').toString(); […]
我在想这个,这就是我想到的: 假设我们有这样的代码: console.clear(); console.log("a"); setTimeout(function(){console.log("b");},1000); console.log("c"); setTimeout(function(){console.log("d");},0); 一个请求进来,JS引擎开始执行上面的代码一步一步。 前两个电话是同步呼叫。 但是,当涉及到setTimeout方法时,它将成为asynchronous执行。 但JS立即从它返回并继续执行,这被称为Non-Blocking或Async 。 并继续在其他等工作 这个执行的结果如下: ACDB 所以基本上第二个setTimeout首先完成,它的callback函数比第一个执行得早,这是有道理的。 我们在这里讨论单线程应用程序。 JS引擎继续执行这个,除非它完成第一个请求,它不会去第二个。 但好处是,它不会等待像setTimeout这样的阻塞操作来parsing,所以它会更快,因为它接受新的传入请求。 但是我的问题出现在以下几个方面: #1:如果我们正在讨论单线程应用程序,那么当JS引擎接受更多请求并执行它们时,什么机制处理setTimeouts呢? 单线程如何继续处理其他请求? 在其他请求保持进入并执行的情况下, setTimeout是如何工作的。 #2:如果这些setTimeout函数在更多的请求进入和执行后在幕后执行,那么在后台执行asynchronous执行是什么? 我们所说的这个叫做EventLoop东西是什么? #3:但是不应该把整个方法放在EventLoop这样整个事情就会被执行,callback方法会被调用吗? 这是我在谈论callback函数时所理解的: function downloadFile(filePath, callback) { blah.downloadFile(filePath); callback(); } 但在这种情况下,JS引擎如何知道它是否是asynchronous函数,以便将callback放入EventLoop? Perhaps something like the EventLoop? Perhaps something like the C#中EventLoop? Perhaps something like the async`关键字或某种指示JS引擎将采取的方法的属性是asynchronous方法,应该作相应的处理。 #4:但是有一篇文章与我猜测的事情可能如何工作完全相反: 事件循环是一个callback函数的队列。 当asynchronous函数执行时,callback函数被推入队列中。 JavaScript引擎不会开始处理事件循环,直到执行了asynchronous函数之后的代码。 […]
我有这个错误请求。 德语的最后一句话的意思是“Firefox无法连接到位于ws:// …….”的服务器。 服务器不会是我想的问题。 因为这里是nginx的configuration,因为我觉得有问题! server { server_name example.org; listen 80 default_server; root /var/www/web; location / # for symfony2 { try_files $uri @rewriteapp; } location @rewriteapp # for symfony2 { rewrite ^(.*)$ /app.php/$1 last; } location ~ ^/app\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param HTTPS off; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ^/socket […]
重现问题 我试图通过使用Web套接字传递错误消息时遇到了一个问题。 我可以使用JSON.stringify复制我正面临的问题,以迎合更广泛的受众: // node v0.10.15 > var error = new Error('simple error message'); undefined > error [Error: simple error message] > Object.getOwnPropertyNames(error); [ 'stack', 'arguments', 'type', 'message' ] > JSON.stringify(error); '{}' 问题是我最终得到一个空的对象。 我试过了 浏览器 我第一次尝试离开node.js并在各种浏览器中运行它。 Chrome版本28给了我相同的结果,有趣的是,Firefox至less做了一个尝试,但是忽略了这个消息: >>> JSON.stringify(error); // Firebug, Firefox 23 {"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"} 替代function 然后我看了Error.prototype 。 它显示了原型包含toString和toSource等方法。 知道函数不能被string化,当调用JSON.stringify去除所有函数时,我包含了一个replace函数,但是后来意识到它也有一些奇怪的行为: var error […]
我有一个来自mongoose的文档,发现我想在JSON编码之前扩展并作为响应发送出去。 如果我尝试向文档添加属性,它将被忽略。 这些属性不会出现在Object.getOwnPropertyNames(doc)使得正常的扩展是不可能的。 奇怪的是, JSON.parse(JSON.encode(doc))工作并返回一个对象与所有正确的属性。 有没有更好的方法来做到这一点?