Node.js用于桌面应用程序的实时许可

Node.js用于桌面应用程序的实时许可,node.js,licensing,Node.js,Licensing,我的公司销售一个桌面应用程序(用C编写),我们通过将软件锁定到用户硬件的各个部分来获得许可。这几年来一直很麻烦,因为windows机器id的某些部分经常更改。我希望通过node.js改变这一点,但需要一些指导。以下是我试图做的事情的概要: 客户端在其桌面上启动我的应用程序 桌面应用程序向服务器发送数据(可能是许可证代码的散列,也可能是用户的电子邮件地址或其他数据),以确认用户已获得授权 服务器响应另一个哈希值,指示许可证是否正常 在客户端(桌面应用程序)和服务器之间建立会话,如果试图在另一台计算

我的公司销售一个桌面应用程序(用C编写),我们通过将软件锁定到用户硬件的各个部分来获得许可。这几年来一直很麻烦,因为windows机器id的某些部分经常更改。我希望通过node.js改变这一点,但需要一些指导。以下是我试图做的事情的概要:

  • 客户端在其桌面上启动我的应用程序
  • 桌面应用程序向服务器发送数据(可能是许可证代码的散列,也可能是用户的电子邮件地址或其他数据),以确认用户已获得授权
  • 服务器响应另一个哈希值,指示许可证是否正常
  • 在客户端(桌面应用程序)和服务器之间建立会话,如果试图在另一台计算机上使用许可证,该会话将向用户发出警告

  • 如果用户试图从具有相同许可证代码的第二台计算机启动我的应用程序,桌面应用程序(客户端)和节点服务器如何建立可以中断的会话?我已经在npm或其他网站上搜索了类似的东西,以便在没有任何运气的情况下给我一些指导。我见过一些应用程序,如果您试图启动机器B,会在机器A上向您发出警告(通常是一个警告,询问用户是否要注销以允许机器B访问许可证)。

    您将需要从服务器到机器A的持久连接。基本上是一种实时推送消息的方法,给你的客户。C客户机的一个简单解决方案可能是TCP连接,由节点的库处理。节点还具有。MQTT或WebSocket也是其他“推送”消息选项

    当机器B尝试登录到服务器时,服务器可以向机器a发送一条消息,请求注销。您可以保留对机器B的响应以等待机器A注销,或者只是告诉机器B稍后再试(如果机器A脱机并且永远不会收到消息,这可能会更好)

    节点服务器必须维护对许可证的访问、正在使用的许可证以及与哪些许可证绑定的套接字连接