小编Tom*_*ski的帖子

在nodejs中管道从子节点到父节点的数据

我有一个nodejs父进程启动另一个nodejs子进程.子进程执行一些逻辑,然后将输出返回给父进程.输出很大,我正在尝试使用管道进行通信,如child.send()方法的文档(其工作正常BTW)所示.

我希望有人建议如何正确构建这个沟通渠道.我希望能够将数据从父节点发送到子节点,并且还能够将数据从子节点发送到父节点.我已经开始了一点,但它是不完整的(仅从父节点向子节点发送消息)并抛出错误.

父文件代码:

var child_process = require('child_process');

var opts = {
    stdio: [process.stdin, process.stdout, process.stderr, 'pipe']
};
var child = child_process.spawn('node', ['./b.js'], opts);

require('streamifier').createReadStream('test 2').pipe(child.stdio[3]);
Run Code Online (Sandbox Code Playgroud)

子文件代码:

var fs =  require('fs');

// read from it
var readable = fs.createReadStream(null, {fd: 3});

var chunks = []; 

readable.on('data', function(chunk) {
    chunks.push(chunk);
});

readable.on('end', function() {
    console.log(chunks.join().toString());
})
Run Code Online (Sandbox Code Playgroud)

上面的代码打印预期输出("测试2")以及以下错误:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: shutdown ENOTCONN
    at exports._errnoException (util.js:746:11)
    at Socket.onSocketFinish (net.js:232:26)
    at Socket.emit (events.js:129:20)
    at finishMaybe (_stream_writable.js:484:14)
    at afterWrite …
Run Code Online (Sandbox Code Playgroud)

pipe child-process node.js

9
推荐指数
1
解决办法
8402
查看次数

使用node.js中的socket.io设置服务器 - 服务器SSL通信

我正在尝试使用socket.io通过ssl连接设置服务器到服务器链接.这是我的例子:

/**
 * Server
 */


var app = require('express')();
var config = require('./config');
var https = require('https');
var http = require('http');
var fs = require('fs');
var server = https.createServer({key: fs.readFileSync(config.ssl.key), cert: fs.readFileSync(config.ssl.cert), passphrase: config.ssl.passphrase}, app);
//var server = http.createServer(app);
var io = require('socket.io').listen(server);

server.listen(config.port);

app.get('/', function (req, res) {
    res.send('Server');
  //res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});



/**
 * Client
 */


var io = require('socket.io-client'); …
Run Code Online (Sandbox Code Playgroud)

ssl server-to-server node.js socket.io

5
推荐指数
3
解决办法
2万
查看次数

的NodeJS.处理 字符编码

我在处理字符编码方面遇到了困难.我正在尝试抓取以下网址:

http://www.google.com/movies?near=Montreal&date=0
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

var http = require('http');
var url = require('url');
var Iconv  = require('iconv').Iconv;

var location = 'montreal';

var googleMovies = url.parse("http://www.google.com/movies?near=" + location);

var req = http.request(googleMovies, function(response) {
    var str = '';
    response.on('data', function(chunk) {
        str += chunk;
    });
    response.on('end', function() {

        var iconv = new Iconv('latin1', 'UTF-8');
        str = iconv.convert(str).toString();

        console.log(str);
    });
});
req.end()
Run Code Online (Sandbox Code Playgroud)

我第一次尝试没有:

    var iconv = new Iconv('latin1', 'UTF-8');
    str = iconv.convert(str).toString();
Run Code Online (Sandbox Code Playgroud)

但这导致了 角色.

我在本页测试了上面列出的来源:

http://nlp.fi.muni.cz/projects/chared/

它似乎将它视为latin1,但事情可能是错误的.

character-encoding node.js

4
推荐指数
1
解决办法
6623
查看次数

拱门上的奇怪的现场问题

最近我的gnome-terminal停止了工作.使用xterm启动后,我看到以下内容:

(process:3975): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8
Run Code Online (Sandbox Code Playgroud)

它似乎与我的语言环境有关,如下所示:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8" …
Run Code Online (Sandbox Code Playgroud)

linux locale gnome-terminal archlinux

4
推荐指数
1
解决办法
7694
查看次数

处理 MongoError: 服务器实例池被破坏的好方法

我正在运行一个带有 mongo 连接池的守护进程。它运行了好几天,但最终崩溃了,并且每个后续请求都会收到此错误:

MongoError:服务器实例池被破坏

代码类似于:

var MongoClient = require('mongodb').MongoClient;
var express = require('express');
var app = express();

MongoClient.connect(config.mongo.url, function(err, db) {

    app.use('/', function(req, res, next) {
        db.collection('somecollection').find({}).toArray(function(err, result) {
            console.log(result);
        });
    })

    var server = require('http').Server(app);
    server.listen(config.worker.port, function() {
        var address = server.address();
        logger.info({
            address: address.address,
            port: address.port
        }, 'New Worker created');
    });
});
Run Code Online (Sandbox Code Playgroud)

重新启动进程可以解决问题,但我希望应用程序能够以某种方式优雅地重新连接并重置那里的“db”对象。

mongodb node.js

4
推荐指数
1
解决办法
6034
查看次数

nodejs node-http-proxy设置缓存

我正在尝试使用缓存node-http-proxy模块设置 node-http-proxy模块.我已经设法配置node-http-proxy来完成我在代理调用方面需要做的事情,但我想找到一种方法来缓存其中一些调用.

我当前的代码如下(省略一些配置bootstrapping):

var http = require('http');
var https = require('https');
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});
var fs = require('fs');

var handler = function(req, res) {
    proxy.web(req, res, {target: 'http://localhost:9000'});
};

var server = http.createServer(handler).listen(config.children.http.port, function() {
    console.log('Listening on port %d', server.address().port);
});

var secure = https.createServer(config.children.https.options, handler).listen(config.children.https.port, function() {
    console.log('Listening on port %d', secure.address().port);
});
Run Code Online (Sandbox Code Playgroud)

在处理程序函数内部,我希望能够以某种方式捕获代理从"目标"读取的内容并将其流式传输到fs.createWriteStream('/ somepath'),然后再将其传递给res.然后我会修改我的函数来查看沿线的内容:

var handler = function(req, res) {
    var path = '/somepath';
    fs.exists(path, function(exists) {
        if(exists) {
            console.log('is …
Run Code Online (Sandbox Code Playgroud)

proxy caching node.js

3
推荐指数
1
解决办法
2116
查看次数

golang 中的 HTML 模板

我正在关注本教程: golang tutorial - wiki,除了“其他任务”部分的最后一点外,我已经设法使所有内容正常工作。我的教程实现:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "html/template"
    "regexp"
)

type Page struct {
    Title string
    Body []byte
}

func (p *Page) save() error {
    filename := "data/" + p.Title + ".txt"
    return ioutil.WriteFile(filename, p.Body, 0600)
}

func loadPage(title string) (*Page, error) {
    filename := "data/" + title + ".txt"
    body, err := ioutil.ReadFile(filename)
    if err != nil {
        return nil, err
    }
    return &Page{Title: title, Body: body}, nil
}

func renderTemplate(w http.ResponseWriter, tmpl …
Run Code Online (Sandbox Code Playgroud)

html templates go

2
推荐指数
1
解决办法
4753
查看次数