# packetgun-frontend

> Packetgun-frontend is the frontend node.js module that is used with the Packetgun-backend module to exenge data easily between the two.

Latest version **1.0.0** (published 2023-10-22) · ISC license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install packetgun-frontend
pnpm add packetgun-frontend
yarn add packetgun-frontend
bun add packetgun-frontend
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2023-10-22 |
| First published | 2023-10-22 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 10.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | willmil11 |
| Maintainers | willmil11 |
| Keywords | packet, packetgun, node.js, node, js, javascript, frontend, frontend-tobackend, web, packets, data, send, receive, websocket, ws, easynodes, willmil11 |

## Links

- npm: https://www.npmjs.com/package/packetgun-frontend
- Repository: https://github.com/willmil11/Packetgun
- Homepage: https://github.com/willmil11/Packetgun#readme
- Issues: https://github.com/willmil11/Packetgun/issues
- npm.io page: https://npm.io/package/packetgun-frontend

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.0.0 (latest) — 2023-10-22

## README

# Packetgun-frontend by willmil11
## Installation
If you have node.js and npm installed you can run the following command in the terminal.
```bash
npm install packetgun-frontend
```
## Usage
This package is designed to be used with packetgun-backend as server.

First import the package with a script tag in the html of your website:
```html
<script src="node_modules/packetgun-frontend/packetgun-frontend.js"></script>
```
This package doesn't require initialization.
#### The following will only work if the package is already fully loaded.
### Classic method
To send a request with classic method you need to do as below:
```js
//First you'll need to wrap the code in an async function in order to be able to use await
var app = async function(){
    //Send the request
    var response = await packetgun.classic("adress:port", {
        //exit_code will be client_exit_code on the backend side
        exit_code: 0,
        data: "Hello world!"
    })

    //Log request exit code
    console.log(response.exit_code)
    //Log server exit code
    console.log(response.server_exit_code)
    //Log server data
    console.log(response.data)
}
app()
```
This method is not recommended because the size of the client upload data (including exit_code) is limitted to 255 chars/bytes, Also this method is unidirectional as it uses http: client to server not the other way around.

### Recommended method
To create a client with recommended method you need to do as below:
```js
//Create a client
var error = packetgun.recommended("adress:port", function(client){
    //When this callback is ran the client is connected to the server
    
    //Set an event for receiving data
    client.on("data", function(data){
        //Log request exit code
        console.log(client.exit_code)
        //Log server exit code
        console.log(client.server_exit_code)
        //Log server data
        console.log(client.data)
    })

    //Set an event for when the server disconnects
    client.on("serverDisconnect", function(){
        console.log("Server disconnected")
    })

    //Send data to the server (whenever you want and as many times as you want if the server is connected)
    client.send({
        //exit_code will be client_exit_code on the backend side
        exit_code: 0,
        data: "Hello world!"
    })

    //Close the connection (For the demo 5 seconds after the client connects)
    setTimeout(function(){
        client.close()
    }, 5000)
})

//Create a loop to check if the error variable is not null if it is not null then there was an error, the error message will be in the error variable

var loop = setInterval(function(){
    //If error variable is not null
    if (!(error === null)){
        //Log error
        console.error(error)
        //Stop loop
        clearInterval(loop)
    }
}/*Loop every milisecond*/, 1)
```
This method is recommended because it is bidirectional (client to server and server to client) as it uses websockets. Also the size of the client upload data (including exit_code) is unlimited.

## Future goals
- [ ] Encryption
- [ ] Better error handling
- [ ] Recommended method auto reconnection
- [ ] Classic method multiple part uploads (to avoid the 255 chars/bytes client upload limit)

## Changelog
### 1.0.0
- Initial release

## Creator and credits
The creator of this package is willmil11 (me).
<br>
<br>
There are no credits for this package. (yet)

---
_Source: https://npm.io/package/packetgun-frontend · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
