Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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 等待设备并服务对网页的响应_Javascript_Node.js_Nfc_Pcsc - Fatal编程技术网

Javascript 等待设备并服务对网页的响应

Javascript 等待设备并服务对网页的响应,javascript,node.js,nfc,pcsc,Javascript,Node.js,Nfc,Pcsc,我正在尝试使用npm的nfc模块读取智能卡并将结果发送到web界面 只要我的读卡器插上电源,一切都很顺利。 但是,如果读卡器未插入,web服务器(nodejs)将冻结并且不提供页面服务 这是我在utils.js中的代码: exports.rfidPolling=函数(套接字){ var nfc=新的nfc() nfc.on('reader',reader=>{ reader.autoProcessing=false; reader.aid='f2222'; NOTIFFN(套接字,`${read

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

只要我的读卡器插上电源,一切都很顺利。 但是,如果读卡器未插入,web服务器(nodejs)将冻结并且不提供页面服务

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

exports.rfidPolling=函数(套接字){
var nfc=新的nfc()
nfc.on('reader',reader=>{
reader.autoProcessing=false;
reader.aid='f2222';
NOTIFFN(套接字,`${reader.reader.name}设备已连接`)
...
})
nfc.on('error',err=>{
log('发生错误',err);
errorFn(套接字,`发生错误:${err}`)
});
}
在我的文件
server.js
中,我调用
rfidPolling
函数如下:

。。。
var io=require('socket.io')。侦听(服务器);
io.on('连接',函数(套接字){
utils.rfidPolling(套接字)
})
...
我认为nfc.on('reader'),…是它冻结的原因

但是我想不出一个办法来避免这个

多谢各位

干杯
处理:

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

在您的示例中,您希望:

尝试的一些想法: 分析
处理:

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

在您的示例中,您希望:

尝试的一些想法:
尝试将其包含在try block中?是否执行
nfc.start()
?您的
notifyFn
是否为退出路径?是否尝试设置断点?我猜您的回调不会被调用,因为没有实际读取?-但在插入卡时它会工作?奇怪…尝试将其包含在try block中?是否执行
nfc.start()
?您的
notifyFn
是退出路径吗?您是否尝试设置断点?我猜您的回调永远不会被调用,因为没有实际读取?-但当卡插入时它会工作?奇怪。。。
class NFC: public Nan::ObjectWrap {
  public:
    static NAN_METHOD(New);
    static NAN_METHOD(Start);
    static NAN_METHOD(Stop);
nfc_device *pnd;
...
pnd = nfc_open(context, ...)
if (pnd == NULL) {
   nfc_exit(context);
   return Nan::ThrowError("unable open NFC device");
}
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 
}