当前位置: 首页 > 面试题库 >

WebSocket / Socket.IO服务器的一个很好的解决方案(我尝试过Nginx,Node等)

司寇烨伟
2023-03-14
问题内容

我对设置Socket.IO服务器+ Rails
Web应用程序很感兴趣。但是,正如许多人所知,支持WebSocket的Web服务器并不多。到目前为止,这是我的两次尝试:

  1. 我尝试了Nginx模块路由。无法获得编译+配置的组合才能使此功能完全正常运行。我可能有些愚蠢。

http://www.letseehere.com/reverse-proxy-web-
sockets

  1. 我尝试使用node-http-proxy编写自己的Web服务器,但是尽管阅读了所有教程,但仍无法将其与Socket.IO完全集成。

http://github.com/nodejitsu/node-http-
proxy

  1. 我尝试使用bouncy.js编写自己的Web服务器,但速度非常慢。可能是我的代码,可能是框架。我不知道。

http://github.com/substack/bouncy

这些都是我尝试过的事情,我很好奇还有谁沿着这些路线走了,终于找到了可以解决的问题(当然,还有他们为使它起作用而做了些什么)。


问题答案:

根据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


 类似资料:
  • 正如我们所知,目前nginx稳定版本不能代理tcp连接。因此,如果express和Socket.io在同一个端口上工作,我们需要使用其他代理解决方案。 但还有其他方法可以绕过这个问题: 如果我们将socket.io设置为侦听不同的端口,那么express将侦听。例如:nginx代理80端口到8000端口,express侦听8000端口,socket.io侦听8001端口,客户机直接连接到socke

  • 本文向大家介绍tomcat服务器宕机解决方案,包括了tomcat服务器宕机解决方案的使用技巧和注意事项,需要的朋友参考一下 报错信息: 每次出现这个报错都会导致tomcat应用服务器停机,加了下面的java代码后就再也没有停过了。 解决办法: 编写Java代码 @WebListener,这个注解相当于在web.xml配置如下内容 解决方案可以参考如下网址 当然还有就是我再参考这个解决方案的时候,发

  • 问题内容: 我目前有一个用.Net编写的TCP服务器应用程序,用于接收消息并将其提交给客户端。我正在考虑构建Web应用程序,因此需要通信层。 我已经构建了一个Node.JS +Socket.IO应用程序,该应用程序连接到我的TCP服务器,然后将通信推送到Web应用程序,并且一切正常。 我刚刚读过SignalR作为将其保留在.Net堆栈中的替代方法。 但是我也发现我可以编写一个C#Websocket

  • “C:\Program Files\java\jdk1.8.0_05\bin\javaw.exe”-jar“%1”%* 另一个解决方案提供了在PATH环境变量中的引用,我在其中有: C:\程序文件\java\jdk1.8.0_05\bin 我还尝试过: 联合罐 而且

  • 本文向大家介绍Java服务器端跨域问题解决方案,包括了Java服务器端跨域问题解决方案的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了java服务器端跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 现在很多开发的 API 都支持 ajax 直接请求,这样就会导致跨域的问题,解决跨域的问题一方面可以从前端,另一方面就是服

  • 任何建议都将不胜感激。 多谢太平绅士