Untitled

 avatar
unknown
c_cpp
2 years ago
2.3 kB
4
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libwebsockets.h>

struct RustSocket {
    char server_address[100];
    struct lws_context *ws_context;
    struct lws *ws;
};

static const struct lws_protocols protocols[] = {
    {
        .name = "rustplus",
        .callback = NULL, // Callbacks - Find out what this is later
        .per_session_data_size = 0,
        .rx_buffer_size = 0,
    },
    { NULL, NULL, 0, 0 } // terminator - Find out what this is later
};

// Establish a WebSocket connection
void establishConnection(struct RustSocket *rustSocket) {
    struct lws_context_creation_info info;
    struct lws_client_connect_info ccinfo;

    memset(&info, 0, sizeof(info));
    memset(&ccinfo, 0, sizeof(ccinfo));

    info.port = CONTEXT_PORT_NO_LISTEN;
    info.protocols = protocols;
    info.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;

    rustSocket->ws_context = lws_create_context(&info);
    if (!rustSocket->ws_context) {
        fprintf(stderr, "Failed to create LWS context\n");
        exit(EXIT_FAILURE);
    }

    ccinfo.context = rustSocket->ws_context;
    ccinfo.address = rustSocket->server_address;
    ccinfo.port = 443;
    ccinfo.path = "/your_websocket_server_path";
    ccinfo.host = ccinfo.address;
    ccinfo.origin = ccinfo.address;
    ccinfo.protocol = "rustplus";

    rustSocket->ws = lws_client_connect_via_info(&ccinfo);
    if (!rustSocket->ws) {
        fprintf(stderr, "Failed to connect to WebSocket server\n");
        lws_context_destroy(rustSocket->ws_context);
        exit(EXIT_FAILURE);
    }

    // Wait till established connection
    lws_service(rustSocket->ws_context, 0); 
}

// Close connection
void closeConnection(struct RustSocket *rustSocket) {
    lws_context_destroy(rustSocket->ws_context);
}

int main() {
    struct RustSocket rustSocket;

    printf("Enter WebSocket server address (e.g., ws://example.com): ");
    if (scanf("%99s", rustSocket.server_address) != 1) {
        fprintf(stderr, "Failed to read server address\n");
        return EXIT_FAILURE;
    }

    // Establish a connection to the WebSocket
    establishConnection(&rustSocket);

    // Do something with the WebSocket connection, e.g., send/receive messages

    // Close the WebSocket connection
    closeConnection(&rustSocket);

    return 0;
}
Editor is loading...
Leave a Comment