nodejs | cluster: como enviar dados do mestre para todos ou filhos / trabalhadores únicos?
<p>tenho trabalhando (estoque) script de <a href="http://nodejs.org/docs/v0.6.5/api/cluster.html">nó</a> </p><pre><code>var cluster = require('cluster'); var http = require('http'); var numreqs = 0; if (cluster.ismaster) { // fork workers. for (var i = 0; i &lt; 2; i++) { var worker = cluster.fork(); worker.on('message', function(msg) { if (msg.cmd &amp;&amp; msg.cmd == 'notifyrequest') { numreqs++; } }); } setinterval(function() { console.log("numreqs =", numreqs); }, 1000); } else { // worker processes have a http server. http.server(function(req, res) { res.writehead(200); res.end("hello world\n"); // send message to master process process.send({ cmd: 'notifyrequest' }); }).listen(8000); } </code></pre><p>no script acima, posso enviar dados do trabalhador para o processo mestre com facilidade. mas como enviar dados do mestre para os trabalhadores? com exemplos, se possível.</p>
<p>como o cluster.fork é implementado em cima de <a href="http://nodejs.org/docs/v0.6.5/api/all.html#child\_process.fork">child\_process.fork</a> , você pode enviar mensagens de um mestre para o trabalhador usando <code>worker.send({ msg: 'test' })</code> e de um trabalhador para um mestre por <code>process.send({ msg: 'test' });</code>. você recebe as mensagens da seguinte maneira: <code>worker.on('message', callback)</code> (de trabalhador para mestre) e <code>process.on('message', callback);</code> (de mestre para trabalhador).</p><p>aqui está meu exemplo completo: você pode testá-lo navegando em <a href="http://localhost:8000/">http: // localhost: 8000 /</a> então o trabalhador envia uma mensagem ao mestre e o mestre responde:</p><pre><code>var cluster = require('cluster'); var http = require('http'); var numreqs = 0; var worker; if (cluster.ismaster) { // fork workers. for (var i = 0; i &lt; 2; i++) { worker = cluster.fork(); worker.on('message', function(msg) { // we only want to intercept messages that have a chat property if (msg.chat) { console.log('worker to master: ', msg.chat); worker.send({ chat: 'ok worker, master got the message! over and out!' }); } }); } } else { process.on('message', function(msg) { // we only want to intercept messages that have a chat property if (msg.chat) { console.log('master to worker: ', msg.chat); } }); // worker processes have a http server. http.server(function(req, res) { res.writehead(200); res.end("hello world\n"); // send message to master process process.send({ chat: 'hey master, i got a new request!' }); }).listen(8000); } </code></pre>
<p>aqui tem um tutorial mostrando como criar um formulário de contato usando o express e o nodemailer</p>
<p>https://www.mydatahack.com/sending-email-after-form-submission-with-node-js/</p> <p>fala ai hennan, tudo bem? existe um curso para criar api&#39;s sim, dá uma olhada:</p>
<p><a href="https://cursos.alura.com.br/course/nodejs-fundamentos">https://cursos.alura.com.br/course/nodejs-fundamentos</a></p>
<p>esse é apenas um dos possíveis cursos de node da plataforma.</p>
<p>outro detalhe: eu vi que você está fazendo o curso antigo de react, gostaria de sugerir para você pausar esse curso e começar a fazer o novo:</p>
<p><a href="https://cursos.alura.com.br/course/react-componentes-reutilizaveis">https://cursos.alura.com.br/course/react-componentes-reutilizaveis</a></p>
<p>espero ter ajudado.</p> <p>olá jucélio, tudo bem? realmente para concluir esse curso é interessante tentar usar as mesmas versões que o instrutor utilizada durante o curso, mas você também pode ver uma nova versão desse curso, que é o <a href="https://cursos.alura.com.br/course/kubernetes-orquestracao">curso de
kubernetes: orquestração de containers</a>, porém recomendo usar as mesmas versões do instrutor, e logo logo esse curso será atualizado, porque houve várias atualização o que dificultam um pouco prosseguir no curso, mas que é viável sim.</p>
<p>espero ter ajudado!</p> <p>ops, acabei de ver nas respostas anteriores o link para os dados.
segue: <a href="https://github.com/alura-cursos/regressaolinear\_r/archive/master.zip" rel="nofollow">https://github.com/alura-cursos/regressaolinear\_r/archive/master.zip</a></p>
<p>tudo funcionando direitinho.</p> <p>você pode enviar uma mensagem para todos os consoles com a parede de comando.</p><p>para enviar notificações em x, há notificação-envio que envia uma notificação para o usuário atual na tela atual. (pela sua pergunta, acho que você já conhece este.) você pode desenvolver isso com alguns scripts bash. basicamente, você tem que descobrir quais usuários estão em quais x-displays. depois de obter essas informações, você pode usar o envio de notificação desta forma:</p><pre><code>display=:0 sudo -u fschmitt notify-send "message" </code></pre><p>onde fschmitt é o usuário no display 0. você pode analisar a saída do comando "who" para localizar todos os usuários e seus displays. a saída é parecida com esta</p><pre><code>[edinburgh:~]$ who markmerk3 tty7 2010-09-23 10:59 (:0) markmerk3 pts/1 2010-09-30 13:30 (:0.0) fschmitt pts/2 2010-10-08 11:44 (ip-77-25-137-234.web.vodafone.de) markmerk3 pts/0 2010-09-29 18:51 (:0.0) seamonkey pts/6 2010-09-27 15:50 (:1.0) markmerk3 pts/5 2010-09-27 14:04 (:0.0) seamonkey tty8 2010-09-27 15:49 (:1) markmerk3 pts/13 2010-09-28 17:23 (:0.0) markmerk3 pts/3 2010-10-05 10:40 (:0.0) </code></pre><p>veja, há dois usuários executando sessões x, markmerk3 na tela 0 e seamonkey na tela 1. acho que você precisa grep for tty [0-9] * e garantir que no final da linha haja (: [0 -9.] *) para se livrar dos logins do console e extrair o id de exibição da string entre os parênteses.</p> SendMessage não está disponível no BEF.  

  

Acredito que o mecanismo de notificação da tarefas concluídas do BTL serviria pra você. Porém infelizmente não temos o mecanismo de notificação de tarefas concluídas no Desktop, apenas no WES que é ativado via método WithNotification da api do BTL.  

  

Quanto a questão da boa prática, como você percebeu o BTL já fornece algo parecido, então não há nenhuma recomendação contra isso. boa tarde, elias. precisa dentro do while. porém nesse caso seria interessante você usar o do{}while(), onde primeiro você informaria todos os dados e depois fária o teste. não irei colocar seu cód... <p>você usa apenas <code>$from</code> no seu cabeçalho <code>reply-to</code>. se você deseja que ele esteja no cabeçalho <code>from</code>, é necessário configurá-lo no cabeçalho <code>from</code>.</p><p>coloque algo assim antes do seu comando <code>mail()</code>:</p><pre><code>$headers .= 'from: ' . $from . "\r\n"; </code></pre> <p>olá, felício. tudo bom?</p>
<p>você encontrará os arquivos do banco de dados e do dal aqui: <a target="\_blank" href="https://github.com/alura-cursos/csharp-eventos-delegates-lambda/archive/aula1.zip" rel="nofollow">https://github.com/alura-cursos/csharp-eventos-delegates-lambda/archive/aula1.zip</a> 
(irá encontrar mais uns arquivos também, porque é a aula 1 completa).</p>
<p>se você quiser saber mais sobre como o construí e como funciona, o aluno ariel criou um tópico e eu expliquei aqui: <a target="\_blank" href="https://cursos.alura.com.br/forum/topico-como-criar-o-banco-de-dados-dal-59725#671721" rel="nofollow">https://cursos.alura.com.br/forum/topico-como-criar-o-banco-de-dados-dal-59725#671721</a> </p>
<p>tudo bem? esclareci sua dúvida?</p>
<p>abs!</p> <p>oi fernando, tudo bom? vc tem um exemplo da mensagem de erro que aparece pra vc? e qual a versão do nodejs vc está usando?</p>
<p>eu testei com meu projeto aqui e ele não gerou nenhum erro.</p>