rob*_*ode 3 websocket node.js socket.io
我有兴趣设置一个Socket.IO服务器+ Rails Web应用程序.但是,正如许多人所知,支持WebSockets的Web服务器并不多.到目前为止,这是我的两次尝试:
我尝试了Nginx模块路由.无法获得编译+配置的组合以使其完全正常工作.对我来说可能有些愚蠢.
我尝试使用node-http-proxy编写自己的Web服务器,但是我无法完全将它与Socket.IO集成,尽管阅读了所有教程.
我尝试使用bouncy.js编写自己的Web服务器,但速度非常慢.可能是我的代码,可能是框架.我不知道.
这些是我尝试过的东西,而且我只是好奇还有其他人走了这些路线并最终得到了一些工作(当然,他们为了让它发挥作用而做了什么).
根据alessioalex的请求,这是我的配置文件.我删除了所有现有的评论,但添加了一些我自己认为不重要的评论.
但是,描述此配置的所有部分的作用超出了本文的范围,但您可以在HAProxy网站上找到必要的文档.
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
Run Code Online (Sandbox Code Playgroud)