Socket.IO: "UnhandledPromiseRejectionWarning: 错误,广播时不支持回调"。广播时不支持回调"

问题描述 投票:0回答:1

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)
});

我真的不知道为什么会出现这个错误,因为你可以看到,我甚至没有进行广播,所以......耸耸肩。

如果你需要更多的信息,请不要犹豫地问。

node.js socket.io callback
1个回答
0
投票

错误信息说:"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。

© www.soinside.com 2019 - 2024. All rights reserved.