【发布时间】:2015-04-08 17:24:34
【问题描述】:
每当一个节点连接到我的服务器时,我都会尝试创建一个新端点, 并且仅由该端点使用。 但是,现在我被困在如何在 node.js 程序运行时生成一个新的端点。
以下是我希望它如何工作的一些说明: 首先,服务器 (node.js) 已启动。 (端点=> /开始) 其次,节点发送它自己的uid。 第三,服务器接收到数据并基于从 收到的节点 uid。 (节点 uid = aaaa,新端点 => /aaaa) 第四,每次有新节点up,都会回到第二步。
我在互联网上找不到任何解决方案或参考...
有什么建议吗?
谢谢。
【问题讨论】:
-
您目前如何设置像
/start这样的端点?您是否使用任何库/框架?如果您使用基本的http.Server,它将接收对服务器发出的每个请求,而urlpath and query-string 只是一个字符串属性。而且,您可以定义哪些路径无效,哪些路径无效。 -
目前,我正在使用来自 node.js 的模块,称为 Express。 Express 是 npm 包中的模块。要创建一个新端点,我只需要编写“express.get(“/start”)”或类似的东西......实际上,我不太明白你在说什么,因为我'我是服务器方面的初学者。但是,我会期待它,看看我能得到什么......无论如何,谢谢你的回复......非常感谢!
-
借助 Express,您可以使用参数化路由 --
app.get('/:uid', ...);。您可以使用req.params检索其值并使用app.param()和/或router.param()对其进行预处理。 -
这是否适用于连接到 node.js 中服务器的多个节点?例如,我们有 10 个节点连接到 1 个服务器。服务器会为 10 个节点生成所有端点吗?
-
是的,一条路由可以处理所有 10+ 个节点。我之前的观点是,路径只是服务器的一个字符串——
console.log(req.url); // "/aaaaa"。 Express 通过将您提供的路由转换为正则表达式来处理路由,然后将其与路径字符串进行匹配。例如,"/:uid"将匹配任何带有单个段(由斜杠分隔)的路径字符串 --"/foo"、"/bar"、"/aaaaa"等,同时跳过"/foo/bar"等。你必须实际上以相反的方式处理它,检查req.params.uid并拒绝任何与活动节点不匹配的内容。