Tag: node.js

使node.js不会在出错时退出

我正在使用Socket.IO面向面向websocket的node.js服务器。 我注意到某些浏览器没有遵循正确的连接过程到服务器的错误,并且代码没有被写入优雅地处理它,简而言之,它调用一个方法到一个从未设置的对象,从而导致服务器由于错误。 我特别关心的不是这个bug,而是当这样的错误发生时,整个服务器都closures了。 有没有什么我可以在节点的全局层面上做,所以如果发生错误,它只会logging一条消息,也许杀死事件,但服务器进程将继续运行? 我不希望其他用户的连接closures,因为一个聪明的用户在一个大的包含代码库中利用未被捕获的错误。

我可以确定一个string是否是MongoDB ObjectID?

我正在通过将string转换为BSON来进行MongoDB查找。 有没有一种方法可以让我确定在转换之前,我所拥有的string是否为Mongo的有效ObjectID? 这里是我当前的findByID函数的coffeescript。 它工作的很好,但我想查找一个不同的属性,如果我确定string不是一个ID。 db.collection "pages", (err, collection) -> collection.findOne _id: new BSON.ObjectID(id) , (err, item) -> if item res.send item else res.send 404

使用节点child_process的Stdout缓冲区问题

我试图执行curl使用节点child_process从本地networking中的共享文件夹中获取JSON文件(约220Ko)。 但实际上它返回了一个缓冲区问题,我不能通过。 这是我的代码: var exec = require('child_process').exec; var execute = function(command, callback){ exec(command, function(error, stdout, stderr){ callback(error, stdout); }); }; execute("curl http://" + ip + "/file.json", function(err, json, outerr) { if(err) throw err; console.log(json); }) 这是我得到的错误: if(err) throw err; ^ Error: stdout maxBuffer exceeded. at Socket.<anonymous> (child_process.js:678:13) at Socket.EventEmitter.emit (events.js:95:17) at Socket.<anonymous> (_stream_readable.js:746:14) at Socket.EventEmitter.emit […]

使用node.js循环浏览JSON

我有一个JSON文件,我需要迭代,如下所示… { "device_id": "8020", "data": [{ "Timestamp": "04-29-11 05:22:39 pm", "Start_Value": 0.02, "Abstract": 18.60, "Editor": 65.20 }, { "Timestamp": "04-29-11 04:22:39 pm", "End_Value": 22.22, "Text": 8.65, "Common": 1.10, "Editable": "true", "Insert": 6.0 }] } 数据中的键不总是相同的(我刚刚使用了示例,有20个不同的键),因此,我无法设置我的脚本来静态引用它们来获取值。 否则,我可以说 var value1 = json.data.Timestamp; var value2 = json.data.Start_Value; var value3 = json.data.Abstract; etc 在过去,我在数据节点上使用了一个简单的foreach循环。 foreach ($json->data as $key => […]

Node.JS中的基本HTTP身份validation?

我试图用NodeJS编写一个REST-API服务器,就像Joyent使用的服务器一样,除了我无法validation一个普通用户的身份validation外,一切正常。 如果我跳转到terminal,并执行curl -u username:password localhost:8000 -X GET ,我无法获取NodeJS http服务器上的值username:password。 如果我的NodeJS http服务器是类似的 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, "127.0.0.1"); ,不应该得到值来自callback的req对象中的值username:password。 如何获得这些值,而不必使用Connect的基本httpauthentication ?

来自Socket.io的s3_pkt.c中的HTTPS错误“数据长度太长”

我们试图通过HTTPS / WSS让Socket.io flashsockets在Internet Explorer 9中工作。 闪存卡通过HTTP工作,但HTTPS给我们带来了问题。 我们使用socket.io版本0.8.7和socket.io-client版本0.9.1-1。 我们通过端口443上的SSL运行我们的websocket服务器。我们已经在正确的位置指定了我们的WebsocketMainInsecure.swf文件的位置(这些是跨域ws请求),并且我们正在swfobject中embedded文件通过HTTPS。 我们在我们的EC2实例的安全组中打开了端口843,跨源策略文件成功通过HTTP呈现。 它似乎不通过HTTPS呈现(Chrome会引发SSL连接错误)。 我们已经尝试了两个版本的WebsocketMainInsecure.swf文件。 首先是由Socket.io提供的文件,它由WebsocketMainInsecure.as构build,不包含行 Security.allowInsecureDomain("*"); 这会引发错误SCRIPT16389: Unspecified error. 在WebSocket.__flash.setCallerUrl(location.href)一行。 我们认为这是因为SWF文件不允许HTTPS请求,所以我们用在这个repo上find的文件replace了WebSocketMainInsecure.swf文件: https : //github.com/gimite/web-socket-js,因为它包括 Security.allowInsecureDomain("*"); 在actionscript代码行。 当我们使用这个时,我们看到flashsocket连接保持断开连接并在无限循环中重新连接。 我们将错误追踪到Transport原型上的onSocketError函数的socket.io库中的transport.js文件。 它引发错误: [Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:] 我们甚至试着将socket.io和socket.io-client更新到版本0.9.6,我们仍然得到了Access is denied错误。 这个错误非常难以debugging,现在我们不知道如何让FlashSocket工作。 我们想知道是否可能需要使用旧版本的socket.io,或者我们的策略文件服务器不接受HTTPS请求,或者甚至可能来自Web的WebSocketMainInsecure.swf文件, socket-js github repo是根据socket.io-client的期望build立的。

如何在aws上的Amazon Linux AMI中自动启动node.js应用程序?

有一个简短的指南来解释如何在实例启动和运行时启动应用程序? 如果是通过yum安装的服务之一,那么我想我可以使用/sbin/chkconfig将其添加到服务。 (为了确定,这是正确的?) 不过,我只是想运行没有通过yum安装的程序。 要运行node.js程序,每当系统启动时,我将不得不在主目录中运行脚本sudo node app.js 我不习惯亚马逊Linux AMI,所以我没有find“正确”的方法来在每次启动时自动运行一些脚本。 有没有一个优雅的方式来做到这一点?

什么是file.slim.js苗条

请原谅我的无知,但我刚刚安装jQuery使用npm和jQuery文件之间有一个名为jquery.slim.js ,什么是slim ? 我知道min代表被缩小,但苗条对我来说是新的! 顺便说一句,我很确定slim是不是min因为还有另一个名为jquery.slim.min.js ,显然它比正常苗条文件更轻。 此外, slim文件包含jQuery 3testing版。 (这就是代码中的评论) 再次抱歉,这个愚蠢的问题,但我不知道。 UPDATE 我正在使用require来包含这些文件,在我不知情的情况下是否需要包含这个文件? 或不?

使用Node.jsstream式传输数据

我想知道是否有可能通过Node.js将数据从服务器stream式传输到客户端。 我想发布一个单一的AJAX请求到Node.js,然后离开连接打开,并不断stream数据到客户端。 客户端将收到这个stream,并不断更新页面。 更新: 作为这个答案的更新 – 我不能得到这个工作。 在您致电close之前,不会发送response.write 。 我已经build立了一个我用来实现这个function的示例程序: Node.js的: var sys = require('sys'), http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); var currentTime = new Date(); setInterval(function(){ res.write( currentTime.getHours() + ':' + currentTime.getMinutes() + ':' + currentTime.getSeconds() ); },1000); }).listen(8000); HTML: <html> <head> <title>Testnode</title> </head> <body> <!– This fields needs to […]

长期支持(LTS)和稳定版本的Node.js之间有什么区别?

最初问: Node.js 4.x分支与LTS(长期支持)和5.x分支(列为稳定)有什么区别? 但是这对于理解6.x和7.x以及将来的8.x和9.x之间的区别同样重要 一般来说,我总是倾向于function和性能的最新版本(因为我现在做了很多ES6 / ES7)。 有没有关于“稳定”分支如何生产的信息?