You are viewing documentation generated from a user contribution or an upcoming release. The contents of this document may not have been reviewed by the Deno team. Click here to view the documentation for the latest release.
Edit

TCP echo Server

Concepts

  • Listening for TCP port connections with Deno.listen.
  • Use copy to take inbound data and redirect it to be outbound data.

Example

This is an example of a server which accepts connections on port 8080, and returns to the client anything it sends.

/**
 * echo_server.ts
 */
import { copy } from "https://deno.land/std@0.158.0/streams/conversion.ts";
const listener = Deno.listen({ port: 8080 });
console.log("listening on 0.0.0.0:8080");
for await (const conn of listener) {
  copy(conn, conn).finally(() => conn.close());
}

Run with:

deno run --allow-net echo_server.ts

To test it, try sending data to it with netcat (Linux/MacOS only). Below 'hello world' is sent over the connection, which is then echoed back to the user:

$ nc localhost 8080
hello world
hello world

Like the cat.ts example, the copy() function here also does not make unnecessary memory copies. It receives a packet from the kernel and sends back, without further complexity.