Javascript 等待设备并服务对网页的响应
我正在尝试使用npm的nfc模块读取智能卡并将结果发送到web界面 只要我的读卡器插上电源,一切都很顺利。 但是,如果读卡器未插入,web服务器(nodejs)将冻结并且不提供页面服务 这是我在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
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
}