1.0.20 • Published 6 months ago

socket.io-client-pro v1.0.20

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

SocketClient

SocketClient is a powerful and flexible Node.js library for interacting with Socket.IO servers. It handles connections, disconnections, and events gracefully, providing advanced configuration options like proxy support, error handling, and SSL/TLS certificate management.

Table of Contents

Features

  • Support for Socket.IO versions v2, v3, and v4.
  • Automatic reconnections with configurable retries.
  • Proxy server support for both custom and environment-based proxies.
  • Easy integration of SSL/TLS certificates for secure connections.
  • Custom event listeners for handling socket events.
  • Built-in utilities for managing headers, query parameters, and cookies.

Installation

To install the SocketClient, use npm:

npm install socket.io-client-pro

Usage

Here’s a quick example of how to use the SocketClient:

const { SocketClient } = require('socket.io-client-pro');

const client = new SocketClient({
    target: {
        "project_id": "guest",
        "target_id": "1aaa0cc37a7009",
        "parent_id": "0",
        "target_type": "websocket",
        "name": "ws://localhost:8080/?query1=aaa",
        "sort": 2001,
        "version": 3,
        "mark_id": "1",
        "status": 1,
        "method": "Raw",
        "request": {
            "event": {
                "parameter": [
                    {
                        "description": "自定义 my-event",
                        "is_checked": 1,
                        "key": "custom-event",
                        "value": ""
                    },
                    {
                        "description": "自定义 my-even2",
                        "is_checked": 1,
                        "key": "my-even2",
                        "value": ""
                    }
                ]
            },
            "header": {
                "parameter": [
                    {
                        "description": "",
                        "field_type": "String",
                        "is_checked": 1,
                        "key": "connection",
                        "value": "{{aa}}",
                        "not_null": 1,
                        "param_id": "1aaaac74ba700a"
                    },
                    {
                        "description": "",
                        "field_type": "String",
                        "is_checked": 1,
                        "key": "bbb",
                        "value": "456",
                        "not_null": 1,
                        "param_id": "1aaaadcc3a700b"
                    }
                ]
            },
            "query": {
                "parameter": [
                    {
                        "description": "",
                        "field_type": "String",
                        "is_checked": 1,
                        "key": "query1",
                        "value": "1",
                        "not_null": 1,
                        "param_id": "1aaeb8687a7000"
                    },
                    {
                        "description": "",
                        "field_type": "String",
                        "is_checked": 1,
                        "key": "query2",
                        "value": "哈哈😂",
                        "not_null": 1,
                        "param_id": "1aaebb177a7001"
                    }
                ]
            },
        },
        "url": "http://cc.apipost.cc:6023",
        "config": {
            "information_size": 5,
            "reconnect_num": 0,
            "reconnect_time": 5000,
            "shake_hands_path": "/socket.io",
            "shake_hands_time_out": 0,
            "socket_event_name": "",
            "socketIo_version": "v3"
        },
        "created_at": "2024-12-06T11:38:52+08:00",
        "updated_at": "2024-12-06T11:56:16+08:00"
    },
    option: {
        "globals": {
            "aa": 11
        },
        "env": {
            "env_id": "1",
            "env_name": "默认环境",
            "env_pre_url": "",
            "env_pre_urls": {
                "1": {
                    "server_id": "1",
                    "name": "默认服务",
                    "sort": 1000,
                    "uri": ""
                },
                "default": {
                    "server_id": "1",
                    "name": "默认服务",
                    "sort": 1000,
                    "uri": ""
                }
            },
            "environment": {
                "aa": 22,
                "bb": 33
            }
        },
        "cookies": {
            "switch": 1,
            "data": []
        },
        "system_configs": {
            "send_timeout": 0,
            "auto_redirect": -1,
            "max_redirect_time": 5,
            "auto_gen_mock_url": 1,
            "request_param_auto_json": -1,
            "proxy": {
                "type": 2,
                "envfirst": 1,
                "bypass": [],
                "protocols": [
                    "http"
                ],
                "auth": {
                    "authenticate": -1,
                    "host": "",
                    "username": "",
                    "password": ""
                }
            },
            "ca_cert": {
                "open": -1,
                "path": "",
                "base64": "data:application/json;base64,ewogICAgImNsaWVudE5hbWUiOiAiVGh1bmRlciBDbGllbnQiLAogICAgImNvbGxlY3Rpb25OYW1lIjogIm1tbSIsCiAgICAiY29sbGVjdGlvbklkIjogImY1Zjc0NDBlLTYzMTAtNDcxYS04ZDlmLWYxODkxODUzZGY1NSIsCiAgICAiZGF0ZUV4cG9ydGVkIjogIjIwMjQtMTItMDVUMTc6NTQ6MTEuNjE0WiIsCiAgICAidmVyc2lvbiI6ICIxLjIiLAogICAgImZvbGRlcnMiOiBbXSwKICAgICJyZXF1ZXN0cyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJfaWQiOiAiNmIxMjgxNGQtNTRkNy00OThkLThlM2MtNTcwMzBkN2Y1ODE3IiwKICAgICAgICAgICAgImNvbElkIjogImY1Zjc0NDBlLTYzMTAtNDcxYS04ZDlmLWYxODkxODUzZGY1NSIsCiAgICAgICAgICAgICJjb250YWluZXJJZCI6ICIiLAogICAgICAgICAgICAibmFtZSI6ICJlY2hvIGFwaSIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudGh1bmRlcmNsaWVudC5jb20vd2VsY29tZSIsCiAgICAgICAgICAgICJtZXRob2QiOiAiR0VUIiwKICAgICAgICAgICAgInNvcnROdW0iOiAyMDAwMCwKICAgICAgICAgICAgImNyZWF0ZWQiOiAiMjAyNC0wOC0yMFQwNDowMToxMS4zNzNaIiwKICAgICAgICAgICAgIm1vZGlmaWVkIjogIjIwMjQtMDgtMjBUMDQ6MDE6MjkuMTA4WiIsCiAgICAgICAgICAgICJoZWFkZXJzIjogW10KICAgICAgICB9CiAgICBdLAogICAgInJlZiI6ICJNeUhjb1BocWYtVXFFMlpxQ2RSdHNpUFAtUzMzNDVoaDFaRE5tZ0Nscm82SG4zT05uZl8yMWtod2FBUHZHTTNoUERmb3VZLV9BbVhUN0VjOV9Vblh0USIKfQ=="
            },
            "client_cert": {}
        },
        "custom_functions": {}
    },
    callback: (response) => {
        console.log(response);
    }
});

(async () => {
    await client.connect();
    client.emitEvent('message', { text: 'Hello, world!' });
})();

Configuration Options

  • callback: A function that will be called with the response of socket operations.

Event Listeners

You can set up custom event listeners in the request.event:

event: {
    socketIoEventListeners: [
        { key: 'someEvent', is_checked: true },
        { key: 'anotherEvent', is_checked: true },
    ]
}

These events will trigger the callback function you provided during initialization.

Methods

  • connect(): Establish a connection to the Socket.IO server.
  • emitEvent(event, data, ackCallback): Emit an event to the server with optional acknowledgment callback.
  • disconnect(): Disconnect from the Socket.IO server.
  • awaitDisconnect(): Wait for the Socket.IO server to disconnect.

License

This project is licensed under the MIT License.

1.0.20

6 months ago

1.0.19

6 months ago

1.0.18

6 months ago

1.0.17

6 months ago

1.0.16

6 months ago

1.0.15

6 months ago

1.0.14

6 months ago

1.0.13

6 months ago

1.0.12

6 months ago

1.0.11

6 months ago

1.0.10

6 months ago

1.0.9

6 months ago

1.0.8

6 months ago

1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago