im试图用Node.js、Socket.IO和MongoDB创建一个登录系统,有一点我必须得到客户端的某个cookie.所以我 "发送 "一个事件给客户端,它应该返回cookie,这样我就可以在同一个函数中处理这些数据了,我的代码如下。
服务器:
async function checklogin(user) {
user = user;
console.log("user:", user);
await User.find({username:user}).then(function(docs) {
servercookieid = docs[0].cookieid;
servercookiedate = docs[0].cookiedate;
});
io.emit('getCookie', function(responseData) {
console.log(responseData)
}).catch(error)
}
服务器:客户端。
socket.on('getCookie', function(callback) {
console.log('getting cookie...');
var Cookie = document.cookie;
callback(Cookie)
});
我真的不知道为什么会出现这个错误,因为你可以看到,我甚至没有进行广播,所以......耸耸肩。
如果你需要更多的信息,请不要犹豫地问。
错误信息说:"Socket.IO:"Unhandled"。
Socket.IO: "UnhandledPromiseRejectionWarning: 错误,广播时不支持回调。广播时不支持回调",但事实上,当你这样做的时候。
io.emit
你正在广播。
目前你做命令的时候是在广播。
io.emit('getCookie', function(responseData) {
console.log(responseData)
}).catch(error)
但对于广播来说,你只需要设置一个参数,这不是一个函数,只要修改你的代码就能解决这个错误,改成:
io.emit('getCookie', responseData);//must set the cookie
按你提供的代码改成: responseData
是没有定义的。但从名字上看应该是一个cookie。