我在我的應用程序mongoose.js和socket.io中使用。我嘗試在一個貓鼬回調中發出一個事件。但我的客戶(角度)似乎沒有收到任何東西。此外,每當事件發送到服務器端時,在回調中和「用戶」數據中都會持續斷開連接。在建立連接之前關閉Socket.io
準確地說,我的用戶模型被包裹在下列方式:
const mongoose = require('mongoose')
class DBReader {
constructor(name, schema) {
this.Model = require(`./models/${name}`)
}
find(params, callback) {
this.Model.find(params, callback)
}
findOne(params, callback) {
this.Model.findOne(params, callback)
}
findById(id, callback) {
this.Model.findById(id, callback)
}
}
module.exports = DBReader
我實例化我的用戶是這樣的:
const User = new DBReader('user')
下面的代碼工作,也就是我的客戶端沒有斷開連接並接收這兩個事件(因爲我在回調中不發送'用戶'數據,所以它工作...)
function socket(httpServer) {
const io = require('socket.io')(httpServer)
io.on('connection', socket => {
console.log('User connected')
socket.emit('hello', 'Hello World !')
User.findOne({}, (err, user) => {
console.log(err)
console.log(user) // Displays the requested user
})
socket.emit('hello', 'Wooorld !')
socket.on('disconnect',() => {
console.log('User disconnected')
})
})
}
此代碼也可以工作(因爲我不會發射'用戶'數據)。
function socket(httpServer) {
const io = socketio(httpServer)
io.on('connection', socket => {
console.log('User connected')
socket.emit('hello', 'Hello World !')
User.findOne({}, (err, user) => {
console.log(err)
console.log(user)
socket.emit('hello', 'hellooo !')
})
socket.emit('hello', 'Wooorld !')
socket.on('disconnect',() => {
console.log('User disconnected')
})
})
}
但這代碼不起作用(與「用戶」數據回調發出的事件)......
function socket(httpServer) {
const io = socketio(httpServer)
io.on('connection', socket => {
console.log('User connected')
socket.emit('hello', 'Hello World !')
User.findOne({}, (err, user) => {
console.log(err)
console.log(user)
socket.emit('hello', user)
})
socket.emit('hello', 'Wooorld !')
socket.on('disconnect',() => {
console.log('User disconnected')
})
})
}
你有什麼解釋?你需要更多的信息嗎?
? – willmaz
socket.io-client – Arpp
我想知道如果我的問題可能來自我嘗試發送的對象類型。我以爲socket.io正在做所有的工作,但如果我的用戶不是有效的JSON字符串呢? – Arpp