如何在nodejs-udp服务器中设置api路由



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

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

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

Itried this

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
}

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

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

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

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

最新更新