C websocket library, libwebsockets

1.6k views Asked by At

I am looking through C websocket library libwebsockets client side example.

But i don't understand what the example purpose is.

Here is the example, this example have two connection (in the code wsi_dumb and wsi_mirror)which are same i think, and i don't know what second connection's purpose is.

using first conenction(in the code wsi_dumb), it seems to wait a request from server with libwebsocket_service() and then ...what with second connection(in the code wsi_mirror)?

And below is the part of the code i am saying.

wsi_dumb = libwebsocket_client_connect(context, address, port, use_ssl,
            "/", argv[optind], argv[optind],
             protocols[PROTOCOL_DUMB_INCREMENT].name, ietf_version);

/*
 * sit there servicing the websocket context to handle incoming
 * packets, and drawing random circles on the mirror protocol websocket
 */

n = 0;
while (n >= 0 && !was_closed) {
    n = libwebsocket_service(context, 1000);

    if (wsi_mirror == NULL) {

        /* create a client websocket using mirror protocol */

        wsi_mirror = libwebsocket_client_connect(context, address, port,
             use_ssl,  "/", argv[optind], argv[optind],
                     protocols[PROTOCOL_LWS_MIRROR].name, ietf_version);

        mirror_lifetime = 10 + (random() & 1023);

        fprintf(stderr, "opened mirror connection with %d lifetime\n", mirror_lifetime);

    } else {

        mirror_lifetime--;
        if (mirror_lifetime == 0) {
            fprintf(stderr, "closing mirror session\n");
            libwebsocket_close_and_free_session(context,
                wsi_mirror, LWS_CLOSE_STATUS_GOINGAWAY);

            /*
             * wsi_mirror will get set to NULL in
             * callback when close completes
             */
        }
    }
}
1

There are 1 answers

0
sirop On

I might mix it up but there is an example in libwebsockets where you just open a second browser (window or tab) and then see all the lines and circles you draw in the first browser mirrored and sent to the second browser.