简体   繁体   中英

Keeping Web Socket Server Alive

Zup coders. I've implemented a simple website that uses Web Sockets PHP (Consik Yii2 solution: https://github.com/consik/yii2-websocket ) vs JS (Html5).

Everything is working fine, I only have one issue with my solution, making sure the server is always alive .

  1. I though about saving the WebSocket Instance into Cache and throw a cron that checks the state of the instance. I installed memcached and found out that i can´t save a serialized version of the WebSocket Server instance. ¿Is this a good solution? ¿Would Redis Caché fix this?

  2. I also thought about using client side JS to react to "Error during WebSocket handshake: Unexpected response code: 200" but i can't seem to get it working. I also don't like making the URL that starts websockets public.

Ex:

connect = function(){
    websocket = new WebSocket(webSocketURL);
    websocket.onerror = function(){
        $.get( "/startWebSocketServer", 
            function(data){ 
                connect();
            }
        );
    };
};
connect();

Thanks!

I think that as matter of fact you need a process supervisor who takes care to "supervise" your server process and do actions in response of process/system events like crash, restart etc..

There are several solutions for each case (standard OS implementations, personal preferences, fit your need), here a list http://without-systemd.org/wiki/index.php/Init , Service managers section could best fit your needs. Supervisord is easy to setup and configure, it could be a good start thanks to a good bunch of examples around the net.

Solution 1: using a cache could not be the most orthodox way to implement a custom-made supervisor.

Solution 2: is legit as long as it informs user about a problem, the call to an exposed endpoint to start a service IMHO could be a security flaw.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM