【问题标题】:How to set api routes in a nodejs udp server?如何在 nodejs udp 服务器中设置 api 路由?
【发布时间】:2021-08-27 16:12:45
【问题描述】:

是否可以像在 http 服务器上一样在 udp 服务器上设置不同的路由?

我想实现一个简单的nodejs服务器来像这样在php中调用它。

"udp://" . $host  . "/api/" . $apiVersion . "/myEndpoint";

试过了

var PORT = 1337;
var HOST = '127.0.0.1/api/v1/somethig';

var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function() {
  var address = server.address();
 console.log('UDP Server listening on ' + address.address + ':' + address.port);
});

server.on('message', function(message, remote) {
 console.log(remote.address + ':' + remote.port +' - ' + message);
});

server.bind(PORT, HOST);

使用 HOST 中的路线我得到了以下错误。

events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND 127.0.0.1/api/v1/somethig
←[90m    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26)←[39m
Emitted 'error' event on Socket instance at:
←[90m    at GetAddrInfoReqWrap.callback (dgram.js:289:12)←[39m
←[90m    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:17)←[39m {
  errno: ←[32m'ENOTFOUND'←[39m,
  code: ←[32m'ENOTFOUND'←[39m,
  syscall: ←[32m'getaddrinfo'←[39m,
  hostname: ←[32m'127.0.0.1/api/v1/somethig'←[39m
}

【问题讨论】:

    标签: php node.js api sockets routes


    【解决方案1】:

    在 HTTP 中,您的 URL 的“路径”部分会在第一行发送到您的服务器。

    虽然udp: 方案似乎有效(尽管我没有找到任何详细说明它的官方文档),但我认为“路径”部分与客户发送给您的任何内容之间没有映射关系。

    从广义上讲,如果您(或某人)使用udp: 方案,则没有达成一致意见或标准来记录如何处理此问题,因此我怀疑您是否会以任何方式将该段提交给您。

    每个协议/方案都必须明确定义如何处理 URI 的许多段。原始 UDP 或 TCP 套接字在您明确告诉它之前不会真正发送任何类型的数据。同样,您也不会知道服务器端使用什么主机连接到您,而对于 HTTP,期望它位于 Host 标头中。

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2014-04-21
      • 2017-10-17
      • 1970-01-01
      • 2017-06-08
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多