流星:识别客户端并将数据发送到这个特定的客户端——在其他客户端上创建块元素
meteor: identify client and send data to this specific client - creating block-element on other clients
我的流星应用程序必须由同一用户在多台电脑上使用,但我必须防止同时使用该应用程序。问题是,用户会频繁地更改工作场所,所以每次用户更改电脑时登录和注销并不是一个好主意。我想到了使用临时注销/阻止屏幕:
示例:有五台电脑。用户已经在所有五台电脑上登录了该应用程序。现在他想在PC 1上工作:在所有其他四台电脑上,该应用程序将通过显示透明覆盖层而被暂时阻止。如果他要去PC 2,他可以通过键入一个小PIN(这比完整登录更快)来删除覆盖,然后他可以在这台PC上工作。
PC 1将同时被阻止。
覆盖可能看起来像这样:
<div id="overlay" class="{{tempLogout}}">
<input type="text" id="pin">
</div>
#overlay {
display: none;
position: fixed;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.8);
}
#overlay.logout {
display: block !important;
}
在我的助手中,我会这样做:
Template.anything.helper({
tempLogout: function() {
return (Session.get('currentClient') == clientID) ? '' : 'logout';
}
});
现在,如果Session变量为false
,则会显示覆盖。
我的问题是如何让不同的客户端知道用户当前在哪个平台上工作。这些信息必须是被动的。
因此,在我的概念中,我会为每台电脑创建一个随机ID(也许已经存在任何识别每个客户端的选项了?),并将该ID保存到主体元素上的数据属性:
$('body').attr('data-id', Random.id());
通过键入正确的PIN,此ID将保存到用户集合:
var clientID = $('body').attr('data-id');
Session.set('currentClient', clientID);
Users.update({ _id: Meteor.id() }, { $set: { 'currentClient': clientID } });
通过将Session变量设置为新的客户端ID,所有其他客户端都将被阻止,因为Session变量是被动的。在这里,我不知道我必须使用哪个存储:会话还是集合。
也许有人有一个更聪明的想法来完成这件事。特别是我认为将clientID存储在数据属性中有点。。。哈奇??以及我如何将客户端ID获取到帮助程序中——因为必须检查currentClient是否相同,那么客户端ID。。。
我认为您的概念应该有效。您应该使用Meteor.user(),这样您就不必订阅任何内容(在您的示例中,您使用通用集合Users)。
您应该使用全局clientID,并避免将其插入html中。类似于:
//on client
clientID = Random.id(); //in Meteor a variable without var is global
Template.anything.helper({
tempLogout: function() {
return Meteor.user().profile.clientID == clientID ? '' : 'logout';
}
});
插入正确的引脚时:
Meteor.users.update({_id: Meteor.userId()}, {$set: {'profile.clientID':clientID}});
如果您有多个要启用/禁用的模板,则必须使用会话或全局模板帮助程序。
我认为如果不使用Meteor.logoutOtherClients(),这将非常困难(http://docs.meteor.com/#/full/meteor_logoutotherclients)。如果您在登录机制中使用了oauth之类的东西,那么登录部分将是一个简单的按钮点击以返回应用程序,这实际上比pin简单得多。
- 如何将我的javascript库公开给其他客户端使用
- ASP.net控件中的其他客户端验证
- AngularJS客户端验证:根据其他字段更改验证要求
- Meteor脚本确保在其他一切之前执行(在客户端上)
- Asp.net 客户端单击显示表中其他单元格的值
- 客户端脚本,用于显示来自其他网站的所有图像
- 是否可以使用 PHP 或 JavaScript 或任何其他编程语言在客户端计算机中存储大约 1 MB 的数据
- 我怎么能"保存“;变量客户端,这样我就可以在其他java脚本事件中使用它
- 如何检测客户端´s的计算机语言/或其他什么,以便自动更改网站中的语言
- 流星:识别客户端并将数据发送到这个特定的客户端——在其他客户端上创建块元素
- Html表单:基于客户端上的其他控件来定义控件值的最简单方法
- 在客户端通过Javascript(或任何其他方式)创建文本文件
- 首先向客户端发送html代码(在其他代码之前)
- 将第一个复选框设置为选中,其他复选框从客户端的复选框列表中禁用
- JQuery或任何其他客户端脚本获取客户端windows用户名
- 如何应对.编写一些变量,除了该变量外,不应向客户端发送任何其他内容
- 反映了来自其他计算机的客户端操作
- 关于客户端安全,CORS除了颠覆同源策略之外,还会做其他事情吗
- ASP.NET MVC 返回文件结果,其中包含要在客户端处理的其他数据
- 发送客户端其他玩家的得分?socket . io