我正在尝试开发我的第一个节点应用程序..那就是说我有一个C#应用程序通过POST将一个用户特定的json数据提交到一个url让我们称之为 //localhost/data/send
,这个数据将每隔~1-5秒发送一次(还没决定) .
然后,我将有一个网站,要求用户登录,然后轮询该用户数据并显示它 . 我现在不是每隔x秒刷新一次页面,而是认为我可以使用某种套接字或基于事件的技术,如socket.io或redis pub / sub,将数据推送到连接的客户端 .
但是接下来,我该如何确保两件事:
-
已连接的用户只能访问其信息
-
我目前正在使用快递,但那可以打开任何真正的..
-
仅当用户登录到远程Web界面时才会发送数据
我的思维过程是,当用户登录到桌面c#app时,它开始轮询以检查用户是否/何时登录到web界面 .
用户登录Web界面后,桌面应用会根据桌面应用和Web应用之间匹配的用户名识别会话ID . 然后它开始仅推送到该会话ID .
redis甚至需要吗?或者我可以使用一个简单的mysql表和socket.io?
一旦用户注销,数据就不需要是持久的 .
1 回答
如果数据不需要持久化,并且这是一个内部简单的应用程序,用户很少,那么我将创建一个模块,其中包含一个队列和方法来添加和删除队列中的项目 .
每个登录用户的模块都有一个队列 . 当用户离开页面(onunload)时,您将其注销并删除该用户的队列 . 当您调用c#app调用添加事件时,队列将不存在,这意味着用户未登录 . 当用户登录时,您将为该用户创建队列 .
请参阅此处了解如何在快递中执行身份验证 . How to do authentication with Node.js, Express and Mongoose?
像这样的东西: