Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Socket.io-未经处理的PromisejectionWarning:TypeError:无法读取属性';发射';未定义的_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript Socket.io-未经处理的PromisejectionWarning:TypeError:无法读取属性';发射';未定义的

Javascript Socket.io-未经处理的PromisejectionWarning:TypeError:无法读取属性';发射';未定义的,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我写道: io.sockets.connected[socketId].emit()//我确信'socketId'存在并已连接。 但出现了一个错误: (node:2416) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'emit' of undefined at ~/transmister/transmister-server-and-web/server.js:71:60 at runMi

我写道:

io.sockets.connected[socketId].emit()//我确信'socketId'存在并已连接。
但出现了一个错误:

(node:2416) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'emit' of undefined
    at ~/transmister/transmister-server-and-web/server.js:71:60
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:2416) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 5)
(节点:2416)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“emit”
在~/transmister/transmister服务器和web/server.js:71:60
在运行微任务时()
在处理和拒绝时(内部/process/task_queues.js:97:5)
(节点:2416)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:5)
我的Socket.io版本是“^2.3.0”“Socket.io”:


此API是否已弃用?还是我的代码有问题?

我发现是我的数据库有问题,而不是socket.io。现在已修复。

我发现我的数据库有问题,而不是socket.io。现在已修复。

socketId
可能存在,但
io.sockets.connected[socketId]
不存在。我认为最好的方法是在
connect
事件中存储任何套接字,并在
断开连接时将其删除。顺便说一句,
io.sockets.sockets[socketId]
有效吗?@Namysh,我最近进行了测试。而不是:
sockets.push(socket.id)
然后
io.sockets.connected[socket.id].emit('event',message')
,尝试
sockets[socket.id]=socket然后
套接字[socket.id].emit('event','message')
@Namysh该演示是我实现它的方式,它工作,但不工作,你能帮我找到问题吗?这里是。
socketId
可能存在,但
io.sockets.connected[socketId]
不存在。我认为最好的方法是在
connect
事件中存储任何套接字,并在
断开连接时将其移除。顺便说一句,
io.sockets.sockets[socketId]
有效吗?@Namysh,我最近进行了测试。而不是:
sockets.push(socket.id)
然后
io.sockets.connected[socket.id].emit('event',message')
,尝试
sockets[socket.id]=socket然后
套接字[socket.id].emit('event','message')
@Namysh该演示是我实现它的方式,它工作,但不工作,你能帮我找到问题吗?这是。