The Puter.js Networking API lets you establish network connections directly from your frontend without requiring a server or a proxy, effectively giving you a full-featured networking API in the browser.
puter.net
provides both low-level socket connections via TCP socket and TLS socket, and high-level HTTP client functionality, such as fetch
. One of the major benefits of puter.net
is that it allows you to bypass CORS restrictions entirely, making it a powerful tool for developing web applications that need to make requests to external APIs.
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
(async () => {
// Send a GET request to example.com
const request = await puter.net.fetch("https://example.com");
// Get the response body as text
const body = await request.text();
// Print the body as a code block
puter.print(body, { code: true });
})()
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
const socket = new puter.net.Socket("example.com", 80);
socket.on("open", () => {
socket.write("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
})
const decoder = new TextDecoder();
socket.on("data", (data) => {
puter.print(decoder.decode(data), { code: true });
})
socket.on("error", (reason) => {
puter.print("Socket errored with the following reason: ", reason);
})
socket.on("close", (hadError)=> {
puter.print("Socket closed. Was there an error? ", hadError);
})
</script>
</body>
</html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
const socket = new puter.net.tls.TLSSocket("example.com", 443);
socket.on("open", () => {
socket.write("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
})
const decoder = new TextDecoder();
socket.on("data", (data) => {
puter.print(decoder.decode(data), { code: true });
})
socket.on("error", (reason) => {
puter.print("Socket errored with the following reason: ", reason);
})
socket.on("close", (hadError)=> {
puter.print("Socket closed. Was there an error? ", hadError);
})
</script>
</body>
</html>
These networking features are supported out of the box when using Puter.js:
puter.net.fetch()
- Make HTTP requestsputer.net.Socket()
- Create TCP socket connectionsputer.net.TLSSocket()
- Create secure TLS socket connectionsYou can see various Puter.js networking features in action from the following examples: