node.js - 在 EventEmitter 的侦听器内部调用时,Socket.io 会延迟发出数据
问题描述
我有一个智能卡读卡器。emitter
它通过一个名为(从 Nodejs 的本机events
模块扩展而来)的事件发射器将读取的数据发送到进程。我正在使用 Socket.io 将接收到的字符串数据发送到前端:
emitter.on('cardReceived', (studentRfid) => {
socket.emit('attended', studentRfid);
console.log('Attended!');
});
问题是:读卡时,日志Attended!
立即打印在屏幕上。但是数据会延迟(大约 5 秒)到达前端。
最初,我认为问题出在网络/套接字上。
但是,我试图以 10 毫秒的间隔向前端(在“打开”侦听器之外)发送一些数据,令人惊讶的是它没有造成任何延迟。数据传输完全同步:
setInterval(() => {
socket.emit('message', 'some message');
}, 10 );
所以问题不在于 Socket.io 或网络(如上所示,它非常快)。
什么可能导致这些长时间的延误?
解决方案
推荐阅读
- php - Laravel 中的文件上传
- javascript - Javascript - 在默认解析之前将 EXTRA LARGE 数字转换为 JSON 中的字符串
- github - 从 github 存储库加载时 Gradle 独立插件未知属性
- javascript - 将函数传递给反应类
- sql - 使用另一个表中的值更新一个表(该表有 3 个键,而在另一个匹配表中仅找到 2 个键)
- sql - 按/排序分区是否暗示查询中的排序?
- c - luajit ffi - 如何在 ffi/luajit 中编写指向 ac 函数的指针
- javascript - 如何在 WebGL 中使用键盘更改对象颜色?
- shopify - Shopify:主题观看后 Themekit 自动处理模板/客户
- java - 针对多个单词查询文档