【发布时间】:2020-12-18 21:46:25
【问题描述】:
我将 Node.js 与 Express.js 一起使用,而对于实时数据,我使用的是 socket.io。
我正在尝试在预订应用上创建。
因此,当用户通过 REST api 请求时,服务器将通过 mongoose 将信息存储到 mongoDB,然后将相同的数据发送给其他用户。
我将路由器用于不同的路径。下面是我的 server.js
var express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const routes = require('./routes/routes');
const port = process.env.PORT || 8080;
app.use(express.json());
app.use(cors())
app.use(express.urlencoded({ extended: false }));
app.set('socketio', io);
app.use(routes);
mongoose.Promise = global.Promise;
mongoose.connect(
'mongodb://localhost:27017/myapp',
{ useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, }
).then(() => {
console.log('db connected');
}).catch(err => {
console.log(err,"hello 1998");
});
server.listen(8080);
下面是我的路线
const { Router } = require('express');
var router = Router();
const { main } = require('../helper/db_main')
const { checkAuthentication } = require('../helper/auth')
router.use('/api/v1/services',main,checkAuthentication,require('../controllers/services'));
router.use('/api/v1/category',main,checkAuthentication,require('../controllers/category'));
router.use('/api/v1/socket',main,checkAuthentication,require('../controllers/socket'));
module.exports = router;
下面是我尝试向特定用户发送/发送数据的地方,但它在客户端不起作用,即无法在前端看到发送消息。
const list_all_category = (req,res) => {
console.log("Hjdnckjsdck")
var io = req.app.get('socketio');
// global.io.to("notify_me").emit("message", "hello ftomr");
let result_data
category.list_all_category().then(save_res => {
if (save_res)
result_data = res.status(200).send(save_res)
else{
result = 'fail'
res.send()
}
})
console.log("Here is ninja",io.id)
io.on('connection', function(socket){
console.log(socket.id); // same respective alphanumeric id...
})
io.sockets.on('connect', function(socket) {
const sessionID = socket.id;
})
io.on('notify',function(){
console.log("Galgotia")
})
io.sockets.emit('chat_message', 'world');
}
【问题讨论】:
-
“它不工作” - 什么是错误/问题?
-
基本上我没有在客户端收到通知。
-
我不确定您是否在 list_all_category 中正确导入 socket.io var io = req.app.get('socketio');勾选stackoverflow.com/questions/38511976/…在其他文件中导入socket.io。
-
谢谢,我会试试这个。
-
谢谢@Rupjyoti。我从下面的帖子中得到了答案。 stackoverflow.com/a/37560779/9383409