【问题标题】:Node.JS JavaScript socket.io emit message in microservices architectureNode.JS JavaScript socket.io 在微服务架构中发出消息
【发布时间】:2022-01-19 16:27:50
【问题描述】:

我正在尝试使用 Socket.io 和 Javascript 在 Node.JS 中创建通知功能。

app.js(入口脚本)导入 server.js 脚本(包含 API 端点)。

Socket.io 然后侦听 app.js (const io = socket(server)) 并在服务器发出任何通知消息时通知 index.html。

如果我将 app.js 和 server.js 合并到一个脚本中,代码可以正常工作。

问题是,当我将脚本分成如下所示的微服务架构时,消息没有显示。

当我将端点代码拆分为如下所示的另一个脚本时,我无法弄清楚如何从 server.js 发出 socket.io 消息。

我尝试将socket.io-client 导入server.js,然后使用const socket=io(),并使用socket.emit('notification','Task completed..!') 发出消息。但这不起作用。

你能帮我找出问题吗?

提前致谢!

app.js:


const app = require('./server'); 
const socket = require("socket.io");

const port = 6000; 

const server = app.listen(port, () => {
    console.log(`App started on port ${port} ...!`)
})

const io = socket(server);

module.exports={io};

server.js:


const express = require('express');
const io  = require('socket.io-client');
const socket=io();

// Express configurations
const app = express()

app.get('/start', (req, res) => {

    // Task completed notification
    io.on("connection", (socket)=>{
         socket.emit('notification',`Task completed..!`);
     });

});

// Export app
module.exports = app;

index.html:


<html lang="en">
<head>
  <title>Notify</title>
</head>
  <script src="/socket.io/socket.io.js"></script>
  <script src="/assets/js/jquery.js"></script>
  <script>
  var socket = io();

  socket.on('notification', (msg) => {

    // Create notification element
    var nb = ` ${msg} `;
            
    $('#messages').html(nb);
  
  });
  </script>
  <body>
    <span id="messages"></span>
  </body>
</html>

【问题讨论】:

    标签: javascript html node.js socket.io


    【解决方案1】:

    修好了!

    app.js:

    
    const app = require('./server'); 
    const socket = require("socket.io");
    
    const port = 6000; 
    
    const server = app.listen(port, () => {
        console.log(`App started on port ${port} ...!`)
    })
    
    const io = socket(server);
    
    exports.io=io; // added
    
    

    server.js:

    
    const express = require('express');
    const io  = require('socket.io-client');
    const socket=io();
    
    // Express configurations
    const app = express()
    
    app.get('/start', (req, res) => {
    
        // Task completed notification
        require('./app').io.emit('processing',`Task Completed..!`); // updated
    
    });
    
    // Export app
    module.exports = app;
    
    

    index.html:

    
    <html lang="en">
    <head>
      <title>Notify</title>
    </head>
      <script src="/socket.io/socket.io.js"></script>
      <script src="/assets/js/jquery.js"></script>
      <script>
      var socket = io();
    
      socket.on('notification', (msg) => {
    
        // Create notification element
        var nb = ` ${msg} `;
                
        $('#messages').html(nb);
      
      });
      </script>
      <body>
        <span id="messages"></span>
      </body>
    </html>
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2022-06-17
      • 2011-07-14
      • 2014-01-08
      • 1970-01-01
      • 2015-12-26
      相关资源
      最近更新 更多