我可以使用nodejs将麦克风audio从客户端传输到客户端吗?

我正在尝试创build一个实时语音聊天。 一旦客户端正在按住一个button并进行通话,我希望通过套接字将声音发送到nodejs后端,然后我想将这些数据传输到另一个客户端。 这里是发件人的客户端代码: socket.on('connect', function() { var session = { audio: true, video: false }; navigator.getUserMedia(session, function(stream){ var audioInput = context.createMediaStreamSource(stream); var bufferSize = 2048; recorder = context.createScriptProcessor(bufferSize, 1, 1); recorder.onaudioprocess = onAudio; audioInput.connect(recorder); recorder.connect(context.destination); },function(e){ }); function onAudio(e) { if(!broadcast) return; var mic = e.inputBuffer.getChannelData(0); var converted = convertFloat32ToInt16(mic); socket.emit('broadcast', converted); } }); 然后服务器获取这个缓冲区并将其传输到另一个客户端(在本例中是同一个客户端) […]

通过将string附加到对象来生成JavaScript对象名称

我得到一个JavaScript对象req.files 。 这个对象可以有多个文件。 req.files是一个object 而不是一个 array 。 所以如果用户添加三个文件,该对象将如下所示: req.files.file0 req.files.file1 req.files.file2 其中file0, file1等是另一个对象。 用户最多可以添加15个文件。 我如何检查循环这些对象和从req.files.fileX读取信息? 我需要支持IE 11和铬。

当它不应该时,authentication返回“401(未授权)”

我第一次设置了身份validationfunction,并且在用户login后得到了一些意想不到的结果。一位同事给了我一个有效身份validation的应用程序来模拟我的应用程序,好像我所做的一切都是正确的。 我在前端使用AngularJS,SailsJS后端框架和PassportJS身份validation中间件。 我的源是(现在)公开存储…后端API在Github这里( API Github )和前端代码在这里( 前端Github ) 基本上发生的是用户 点击loginbutton,触发这个function login: function (credentials) { return baseAuth.customPOST(credentials, 'login').then(function (user) { $log.debug('User logged in: ', user); isAuthenticated = true; return user; }); }, 该customPOST的控制器逻辑是这样的 login: function (req, res, next) { passport.authenticate('local', function (err, user, info) { if (err) { return res.json(err); } else if (user) { req.logIn(user, […]

摩卡运行与NPMtesting,但不正常的摩卡CLI命令

我试图了解在这种情况下我做错了什么。 在我的package.json中有一个Node.js项目 "scripts": { "test": "mocha –recursive ./src/setup/*.js ./test/**/*.js" }, "dependencies": { "mocha": "^2.2.5" } 当我运行'npmtesting'时,摩卡testing正确运行: $ npm test (successful run) 但是,当我尝试只运行我的package.json在那里的摩卡指令 $ mocha –recursive ./src/setup/*.js ./test/**/*.js" 这个错误与: -sh: mocha: command not found 我没有摩卡全球安装,我只有通过npm安装它到这个特定的项目。 如果我安装摩卡全球然后它的作品。 为什么当我在当前目录的node_modules中只安装了mocha,而它却使用'npm test'呢?

列出Node.js中的所有全局variables

我试图列出所有的全局variables,包括那些引用内置对象 。 在Chrome的控制台中,我可以简单地键入this键,并取回所有的键,包括String , Number等等。 但是,当我在Node.js中做到这一点时,我得到了更less: > Object.keys(this) [ 'global', 'process', 'GLOBAL', 'root', 'Buffer', 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval', 'setImmediate', 'clearImmediate', 'console', 'module', 'require', '_' ] > this.eval [Function: eval] this.eval从哪里来?

Node.js Nock模拟请求超时和随后的成功

我试图模拟服务请求超时testing节点requestretry模块,它允许您指定请求最大尝试重试次数和重试延迟。 为了testing这个,我需要使用nock来模拟第一个X个请求的超时,然后成功地响应相同的请求。 我知道有'socketDelay()'方法来延迟连接,但是如何在第一个延迟响应之后指定一个成功的响应呢? 我有这个,它模拟了第一个请求的超时 //delays the first request's response by 1500 nock(urlHost) .post('/' + uriPath) .socketDelay(1500) .reply(200, 'response body'); 但是如何才能更快地响应模拟服务恢复呢? 我正在寻找这方面的工作 //delays the first two request's responses by 1500 nock(urlHost) .post('/' + requestIdentifier.ttoRoutingInfo.uriPath) .socketDelay(1500) .reply(200, 'response body') .times(2) //delays the third request by only 300 .then .socketDelay(300) .reply(200, 'response body');

函数适用于Promises

我正在使用蓝鸟在Node.js中开发一个基于承诺的项目,而另一个项目则是由ES6提供的本地承诺。 在这两个中,我有一个链,我在以下forms查询数据库: some_function(/*…*/) .then(function () { return query("SELECT `whatever` FROM `wherever` ") }) .then(/*…*/) 请注意, query显然返回parsing为查询结果的承诺。 这在几个链中重复,我正在寻找一种方法来清理未使用的函数包装。 我自然使用Function.prototype.apply() ,但在这种情况下,当我尝试: .then(query.apply(this, ["SELECT * FROM … "])) .then(function(rows){ /*…*/ }) 链中的下一个函数将rows undefined为undefined 。 谢谢你。 你的帮助表示赞赏。

在koa.js中访问请求的原始主体

我使用io.js和koa.js创build了一个API。 作为一个身体分析器中间件,我正在使用koa-body ,而koa-body又使用了co-body 。 在我的一个API端点上,我收到POST请求,并且需要访问请求的原始正文,因为我需要对其进行编码以validation请求是否有效。 有没有办法访问请求的原始内容? 我试图使用raw-body中间件,但是如果在我称之为koa-body之前使用它, koa-body co-body使用的koa-body就会中断。 如果我在koa-body后使用它,它不起作用。 app.use(function*(next){ let rawRequestBody = yield rawBody(this.req); this.rawRequestBody = rawRequestBody; yield next; }); 编辑: 我认为我find了解决办法,但我不知道这是否是最好的解决scheme。 我认为@greim答案可能是解决这个问题的更好方法。 我在使用koa-body之前添加了以下代码: app.use(function *(next) { let url = this.req.url; if(this.req.method == 'POST') { let that = this; this.req.rawBody = ''; this.req.on('data', function(chunk) { that.req.rawBody += chunk; }); } yield next; });

从pm2开始申请,如果开始形成吞噬

嗨,我正在按照教程来构build一个nodejs应用程序。 本教程使用gulp来运行我的应用程序,我只是gulp dev来开始所有的事情。 在我的大文件中,我有: var fs = require('fs') var gulp = require('gulp') fs.readdirSync(__dirname+'/gulp').forEach(function(task){ require('./gulp/' + task) }) gulp.task('dev', ['watch:css', 'watch:js', 'dev:server']) 在./gulp/server.js中的代码 var gulp = require('gulp') var nodemon = require('gulp-nodemon') gulp.task('dev:server', function(){ nodemon({ script: 'server.js', ext:'js', ignore: ['ng*', 'gulp*', 'assets*'], env: { 'NODE_ENV': require('../config').ENV } }) }) 是否有可能以某种方式使用pm2这个吞咽的设置,我看到一些问题在stackoverflow和谷歌,但无法做任何事情。 如果有人可以帮助我会很好。 先谢谢你。

我的打印机编译器有什么问题? `tsc –version`什么都不返回

在Linux Mint中,我安装了节点并用它来安装打字稿。 使用工作打字稿安装时, tsc –version应返回版本号。 在我的情况下,没有任何返回。 当我运行which tsc ,结果是/usr/local/bin/tsc 。 当我运行cat /usr/local/bin/tsc ,结果是: #!/usr/bin/env node require('../lib/tsc.js') 当我运行find /usr/local -name 'tsc*' ,结果是: /usr/local/bin/tsc /usr/local/lib/node_modules/typescript/bin/tsc /usr/local/lib/node_modules/typescript/lib/tsc.js 这看起来正确吗? 如果是这样的话,那么还有什么想法呢? 注意我也尝试运行/usr/local/lib/node_modules/typescript/bin/tsc –version并得到了相同的结果,即没有。