allinurl / gwsocket

fast, standalone, language-agnostic WebSocket server RFC6455 compliant
http://gwsocket.io
MIT License
745 stars 67 forks source link

Is it possible to Publish data from REDIS instead of file ? #22

Closed KabDeveloper closed 5 years ago

KabDeveloper commented 5 years ago

Hi,

I want to send data from REDIS server to the websocket server and then post to BROWSER.

Is it possible instead of using a file ?

What is the part of the code responsible to read the file and send the data to client ?

Last thing, can i compile it in WINDOWS ?

WSS secured connection supported ?

Thank's in advance.

allinurl commented 5 years ago

You should be able to. But it depends how redis outputs its data. gwsocket simply uses a file descriptor, so you could handle it differently in here. Do you know how redis outputs the results? If you could pipe the results of a command then you are golden...

KabDeveloper commented 5 years ago

Thank you for your answer !

I think it's possible to implement REDIS using your script, here is the REDIS client in C: https://github.com/EulerianTechnologies/eredis OR one of this clients: https://redis.io/clients#c

Since my level in C is very low, it would be possible to catch new entered values on REDIS using this code in PHP:

$r = new Redis();
$r->connect("127.0.0.1", "6379");

while(true){
    while($xdata = $r->spop("data_pipe")){
        $data = unserialize($xdata);

        // Send the data
        // Here a code to send the data to client's browser
    }

    // No more data
    sleep(30);
}

What is the part of your code that is responsible to read the file and return the LINE & Send it ?

Thank you again

allinurl commented 5 years ago

If you want to handle this with PHP, you could keep doing what you are doing and output the data in PHP to the gwosocket fifo. It should work fine. Please take a look at these examples

KabDeveloper commented 5 years ago

I already checked that, but fetching datas from REDIS and then writting them each time to a file will take more time than returning them directly from REDIS to websocket.

Since there a way doing it in C then i bet on this, i need only to identify the part of code responsible to: 1- Read the file line by line 2- The code that return the line and then send it to websocket

There will be many users interested on this combination, with small help i will be able to achieve this and post it here or in a fork.

Thank's :)

allinurl commented 5 years ago

It's all in here. Reads, writes and accept. Let me know how it goes. Thanks.

KabDeveloper commented 5 years ago

Thank you for your help !

Last question please, when your script read the lines from the file ... do it remove the lines when it send it to the clients ?

allinurl commented 5 years ago

Yes it does that automatically.

KabDeveloper commented 5 years ago

What is the line responsible for doing that please ?

What if new lines added while he is sending to clients ? There will be no disfunction or no error ?

allinurl commented 5 years ago

What is the line responsible for doing that please ?

https://github.com/allinurl/gwsocket/blob/master/src/websocket.c#L532

What if new lines added while he is sending to clients ? There will be no disfunction or no error ? It will handle that just fine.