- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的系统有很多模板。模板有多个与之关联的传感器。每个传感器将数据发送到服务器并存储在数据库中。每个传感器都有一个唯一的deviceId。数据存储在 Mongo 数据库中相应的模板集合中。
例如,有两个设备(sbdth11-001,sbdth11-002),“sbdth11-001”发送数据,而“sbdth11-002”保持空闲。在前端,当我看到“sbdth11-001”的网格时,我正在获取数据。但是当我看到“sbdth11-002”的网格时,它正在获取“sbdth11-001”的数据。这意味着服务器套接字向连接到它的所有客户端发送数据。任何人都可以帮助解决这个问题。请看一下我的代码。
服务器端Server.JS
const server = http.createServer(app);
global.io = require('socket.io')(server);
io.on('connection', function(socket){
//console.log('a user connected');
});
Routes.JS
router.post("/upload/device/data/:tempId", TemplateController.AddDeviceData);
TemplateController.JS
AddDeviceData:async function(req, res){
let err, deviceLog;
[err, deviceLog]=await to(TemplateService.AddDeviceLogs(req.params.tempId, req.body));
if(err) return res.serverError(err.message);
if(deviceLog&&deviceLog!==false){
return res.ok(deviceLog);
}else{
res.badRequest("Sorry cannot add Device log data");
}
}
TemplateService.JS
AddDeviceLogs:async function(templateId, payload){
let err, deviceData;
payload.template=templateId;
payload.entryDayTime=new Date();
const myCollection=templateId;
[err, deviceData]=await to(mongoose.connection.db.collection(myCollection).insert(payload));
if(err) TE(err.message, true);
//Socket emit code begin
if(deviceData){
let err,singleDeviceData,allDevicesData;;
[err,singleDeviceData]= await to(this.displayLogs(templateId,payload.deviceId));
[err,allDevicesData] = await to(this.displayLogs(templateId));
if(err) io.emit('socketError', err.message);
io.emit('singleDeviceData',singleDeviceData); //Has to emit the data to
//the device of template whose IDs matches
//with the IDs in this.displayLogs(templateId,payload.deviceId)
io.emit('allDevicesData',allDevicesData);//Has to emit the data to
//the template whose ID matches
//with the ID in this.displayLogs(templateId)
}
//Socket emit code end
return (deviceData)? deviceData.result:false;
}
设备网格 sbdth11-001 设备网格 sbdth11-002
两个网格都获得相同的数据。如果设备未发送任何数据,则它不应在网格中呈现任何内容。
最佳答案
我已经找到解决方案了。我们只需要将 deviceId 与套接字发出事件一起发送到客户端套接字。
在我的用例中,我的模板中有许多设备。模板ID是唯一的,模板中的设备ID应该是唯一的。但是一个 deviceId 可以在不同的模板中多次使用,请记住 deviceId 在模板级别应该是唯一的。
这是代码。
服务器代码(Node.JS)
io.emit(`singleDeviceData${templateId}${payload.deviceId}`,singleDeviceData); //Emitting the device data of a template
io.emit(`allDevicesData${templateId}`,allDevicesData); //Emitting the data of all devices(template)
在前端,我们需要在将数据渲染到网格之前比较 deviceId 和 templateId。
我们发出类似 singleDeviceData566567586Device-1
的事件。其中,singleDeviceData
是事件名称,566567586
是 templateId,Device-1
是 deviceId。
因此,在客户端,在监听 singleDeviceData
事件时,我们将 566567586
和 Device-1
与我们当前在浏览器上打开的网页的 templateId 和 deviceId 进行比较。如果两者相同,则它会呈现数据,并且随着数据不断插入数据库,它会不断更新。否则,显示该页面上应显示的内容,并且数据不会更新。
关于node.js - 如何在 Node js中向特定客户端(基于deviceId)发送套接字数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837429/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!