无法连接到Kafka服务器的TCP套接字

时间:2020-05-22 15:25:48

标签: typescript tcp apache-kafka rust deno

我启动了简单的kafka服务器。参见quick start section

我无法连接到上述服务器。 这是我的代码:

Deno.listen({ port: 9092, transport: 'tcp' });
// or
Deno.listen({ port: 9092, hostname: 'localhost', transport: 'tcp' });
//or
Deno.listen({ port: 9092, hostname: '127.0.0.1' });

这是错误:

error: Uncaught PermissionDenied: An attempt was made to access a socket in a way forbidden by its access permissions. (os error 10013)
    at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11)
    at Object.sendSync ($deno$/ops/dispatch_json.ts:72:10)
    at Object.listen ($deno$/ops/net.ts:51:10)
    at Object.listen ($deno$/net.ts:152:22)
    at Object.listen ($deno$/net_unstable.ts:36:12)
    at file:///D:/rust/deno/index.ts:10:6

我尝试过的命令

deno run --allow-net --allow-write ./index.ts
deno run --allow-net --unstable ./index.ts
deno run --allow-net  ./index.ts

我可以在Rust的帮助下连接到上述服务器,而不会出现任何问题。 这是我的Rust代码:

fn connect() -> Result<(), std::io::Error> {
    let stream = TcpStream::connect("localhost:9092").expect("Could not connect");
}

我是Deno的新手。 我在做什么错了?

1 个答案:

答案 0 :(得分:2)

使用Deno.listen,您将在端口9002上创建服务器,而不连接到Kafka服务器。您应该改用Deno.connect

const conn = await Deno.connect({ hostname: "localhost", port: 9092 });
console.log("Connected", conn);

const decoder = new TextDecoder();
const encoder = new TextEncoder();
await conn.write(encoder.encode("message"));

// Read response
const buf = new Uint8Array(1024);
await conn.read(buf);
console.log('Client - Response:', decoder.decode(buf))


conn.close();