gpt4 book ai didi

javascript - 等待设备并对网页提供响应

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:26 27 4
gpt4 key购买 nike

我正在尝试使用 npm 中的 nfc 模块来读取智能卡并将结果发送到 Web 界面。

只要我的读卡器已插入,一切都很顺利。但是,如果未插入读卡器,Web 服务器(nodejs)就会卡住并且不提供页面。

这是我在 utils.js 中的代码:

exports.rfidPolling = function(socket){
var nfc = new NFC()
nfc.on('reader', reader => {
reader.autoProcessing = false;
reader.aid = 'F222222222';
notifyFn(socket,`${reader.reader.name} device attached`)
...
})
nfc.on('error', err => {
console.log('an error occurred', err);
errorFn(socket,`An error occured : ${err}`)
});

}

在我的文件 server.js 中,我调用 rfidPolling 函数,如下所示:

... 
var io = require('socket.io').listen(server);
io.on('connection', function(socket){
utils.rfidPolling(socket)
})
...

我认为 nfc.on('reader',... 是它卡住的原因。

但我无法找到避免这种情况的方法......

谢谢

干杯

最佳答案

分析source

<小时/>
class NFC: public Nan::ObjectWrap {
public:
static NAN_METHOD(New);
static NAN_METHOD(Start);
static NAN_METHOD(Stop);

nfc.Start处理:

nfc_device *pnd;
...
pnd = nfc_open(context, ...)

nfc_open

如果没有设备,pnd 将为 null,从而触发:

if (pnd == NULL) {
nfc_exit(context);
return Nan::ThrowError("unable open NFC device");
}

其中leads在您的示例中:

errorFn(socket,\`An error occured : ${err}\`)

尝试一些想法:

exports.rfidPolling = function(socket){
var nfc = new NFC()
nfc.on('reader', reader => {
reader.autoProcessing = false;
reader.aid = 'F222222222';
notifyFn(socket,`${reader.reader.name} device attached`)
...
})
nfc.on('error', err => {
console.log('an error occurred', err);
errorFn(socket,`An error occured : ${err}`)
});
setTimeout(function(){
nfc.Stop()
notifyFn(socket,`${null} device timeout`)
}, 4000)
nfc.Start() // undefined | Error
}

关于javascript - 等待设备并对网页提供响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com