aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-10-25 00:44:25 -0700
committerGravatar GitHub <noreply@github.com> 2022-10-25 00:44:25 -0700
commit02c920f4fd09ddc1a32cb2e92c6f391875415949 (patch)
tree4f524f5ce9d672fadb8740c68cc9b1a8410a714f /examples
parent1b50ecc52b55df0c00f991c8206d4ced84ad89b8 (diff)
downloadbun-02c920f4fd09ddc1a32cb2e92c6f391875415949.tar.gz
bun-02c920f4fd09ddc1a32cb2e92c6f391875415949.tar.zst
bun-02c920f4fd09ddc1a32cb2e92c6f391875415949.zip
TCP & TLS Socket API (#1374)
* TCP Socket API * Wip * Add snippet for StringDecoder * Rename `close` to `stop`, replace `close` with `end` * Add a tcp echo server test * Some docs * Update README.md * Fix build * Update README.md Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/tcp.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/tcp.ts b/examples/tcp.ts
new file mode 100644
index 000000000..b392febd1
--- /dev/null
+++ b/examples/tcp.ts
@@ -0,0 +1,49 @@
+import { listen, connect } from "bun";
+
+var counter = 0;
+const msg = Buffer.from("Hello World!");
+
+const handlers = {
+ open(socket) {
+ if (!socket.data?.isServer) {
+ if (!socket.write(msg)) {
+ socket.data = { pending: msg };
+ }
+ }
+ },
+ data(socket, buffer) {
+ if (!socket.write(buffer)) {
+ socket.data = { pending: buffer };
+ return;
+ }
+ counter++;
+ },
+ drain(socket) {
+ const pending = socket.data?.pending;
+ if (!pending) return;
+ if (socket.write(pending)) {
+ socket.data = undefined;
+ counter++;
+ return;
+ }
+ },
+};
+
+setInterval(() => {
+ console.log("Wrote", counter, "messages");
+ counter = 0;
+}, 1000);
+
+const server = listen({
+ socket: handlers,
+ hostname: "localhost",
+ port: 8080,
+ data: {
+ isServer: true,
+ },
+});
+const connection = await connect({
+ socket: handlers,
+ hostname: "localhost",
+ port: 8080,
+});