【发布时间】: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