A good solution for a WebSocket / Socket.IO server (I've tried Nginx, Node, etc.)

后端 未结 3 736
一整个雨季
一整个雨季 2020-12-25 09:09

I\'m interested in setting up a Socket.IO server + Rails web application. However, as many are aware, there are not many web servers that support WebSockets. Here have been

3条回答
  •  自闭症患者
    2020-12-25 09:41

    As per alessioalex's request, here's my configuration file. I deleted all the existing comments but added a few that I, myself, would not have figured to be important.

    However, describing what all the parts of this config does is out of the scope of this post, but you can likely find the necessary documentation on the HAProxy website.

    global
        maxconn 4096 
        pidfile /var/run/haproxy.pid
    
    defaults
        mode    http
    
    frontend all
        bind 0.0.0.0:80
        mode tcp
    
        maxconn 200000
        timeout client 86400000
        default_backend www_backend
    
        # Any URL beginning with socket.io will be flagged as 'is_websocket'
        acl is_websocket path_beg /socket.io
        acl is_websocket hdr(Upgrade) -i WebSocket
        acl is_websocket hdr_beg(Host) -i ws
    
        # The connection to use if 'is_websocket' is flagged
        use_backend socket_backend_http if is_websocket
    
        tcp-request inspect-delay 500ms
        tcp-request content accept if HTTP   
    
    backend www_backend
        option httplog
        option httpclose
        balance roundrobin
        option forwardfor
        timeout server 30000
        timeout connect 4000
        server thin1 localhost:4001 weight 1 maxconn 1024 check
        server thin2 localhost:4002 weight 1 maxconn 1024 check
        server thin3 localhost:4003 weight 1 maxconn 1024 check
    
    backend socket_backend_http
        mode http
        option httplog
        option http-server-close
        option forceclose
        no option httpclose
        balance roundrobin
        option forwardfor 
        timeout queue 5000
        timeout server 86400000
        timeout connect 86400000
        timeout check 1s
        server socket1 localhost:5001 weight 1 maxconn 1024 check
    

提交回复
热议问题