当hostname
使用 的方法未提供时Deno.ListenOptions
,进程将绑定到127.0.0.1
而不是(所有地址)。这将导致与0.0.0.0
之外的所有地址的连接失败。localhost
127.0.0.1
lib.deno.d.ts#L1416:复制代码
export interface ListenOptions {
/** The port to listen on. */
port: number;
/** A literal IP address or host name that can be resolved to an IP address.
* If not specified, defaults to `0.0.0.0`. */
hostname?: string;
}
不确定这是否是一个错误,或者是否因为自上次更新以来的设计变更而需要更改文档。
复制:尝试使用 3 个不同的主机名连接到下面的两个示例(使用deno run --allow-net
):
- http://本地主机:3000
- http://127.0.0.1:3000
<YOUR_LAN_IP_ADDRESS>:3000
(第一个例子中会失败,但第二个例子中不会失败)
import {serve} from 'https://deno.land/std/http/mod.ts';
const port = 3000;
const server = serve({port}); // use default hostname
console.log(`Server running on port ${port}`);
for await (const req of server) {
req.respond({body: 'hello world'});
}
提供明确的主机名0.0.0.0
import {serve} from 'https://deno.land/std/http/mod.ts';
const hostname = '0.0.0.0';
const port = 3000;
const server = serve({hostname, port}); // specify 0.0.0.0 as hostname (all addresses)
console.log(`Server running on port ${port}`);
for await (const req of server) {
req.respond({body: 'hello world'});
}