Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js ZeroMQ推/拉和nodejs读取流_Node.js_Sockets_Stream_Zeromq - Fatal编程技术网

Node.js ZeroMQ推/拉和nodejs读取流

Node.js ZeroMQ推/拉和nodejs读取流,node.js,sockets,stream,zeromq,Node.js,Sockets,Stream,Zeromq,我试图通过打开读取流来读取一些文件,并通过ZMQ将文件块发送到另一个进程来使用它们。流正在正常工作,但是当我启动worker时,它看不到已发送的数据 我尝试每隔500毫秒通过套接字发送数据,而不是在回调中发送,当我启动worker时,它会收集所有以前的数据块: sender = zmq.socket('push') setInterval(() -> console.log('sending work'); sender.send('some work') , 500) 产出

我试图通过打开读取流来读取一些文件,并通过ZMQ将文件块发送到另一个进程来使用它们。流正在正常工作,但是当我启动worker时,它看不到已发送的数据

我尝试每隔500毫秒通过套接字发送数据,而不是在回调中发送,当我启动worker时,它会收集所有以前的数据块:

sender = zmq.socket('push')
setInterval(() ->
  console.log('sending work');
  sender.send('some work')
, 500)


产出:

sending work
sending work
sending work
sending work
sending work
// here I start the worker
sending work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
sending work
work is here: some work
sending work
work is here: some work
sending work
work is here: some work
因此,当worker启动时,它从提取所有以前的数据开始,然后每当有新的内容出现时就提取它。当我这样做时,这不适用:

readStream = fs.createReadStream("./data/pg2701.txt", {'bufferSize': 100 * 1024})
readStream.on "data", (data) ->
  console.log('sending work');
  sender.send('some work'); // I'd send 'data' if it worked..
在这种情况下,工作者根本不提取任何数据。
这些套接字是否应该创建队列?我在这里遗漏了什么?

是的,在到达HWM之前,推送套接字一直处于阻塞状态,并且没有人可以发送。 可能发件人尚未绑定,请尝试以下操作:

sender.bind('address', function(err) {
  if (err) throw err;
  console.log('sender bound!');

  // the readStream code.
}

您的代码示例中也缺少一个
connect
,我打赌它在那里,但可能您忘记了。

是否有任何错误消息,或者它只是不工作?它只是不工作,工作程序启动正确,一切看起来都是正常行为。。它是?
sender.bind('address', function(err) {
  if (err) throw err;
  console.log('sender bound!');

  // the readStream code.
}