Articles of websocket

Ruby应用程序随机locking,但只在生产

我使用WebSockets在Ruby中编写了一个实时的多人游戏,然而,当我尝试在生产环境中玩游戏时,游戏滞后很长时间,每隔几秒钟就抓住半秒。 当我从本地主机连接到它时,这些问题不会发生。 问题不在于代码,因为它在本地主机上工作正常,因此,networking成为罪魁祸首。 除了使用本地主机,我已经在家庭networking上部署了应用程序,并开放了一个端口以及heroku。 当连接到这两者中的任何一个时,在localhost上只有不存在的可见延迟。 我已经运行mtr公共IP(这是没用的,因为只有一跳),也在heroku应用程序(其中有步骤,大量的数据包),但它仍然没有回答为什么应用程序滞后的问题都。 任何想法,我可以做什么来诊断/解决问题,将不胜感激。

nginx SSL终止与粘性负载平衡

我想在负载均衡器中使用带有TLS / SSL终止的socket.io应用程序的Nginx。 是否有可能使用ip_hash指令与TLS / SSL终止结合进行粘性负载ip_hash ? 我的应用程序只使用HTTPS。 我找不到任何资源,除了这篇文章 ,说粘滞负载平衡不适用于TLS / SSL,我很困惑! 文章引用: IP Hash(仅适用于HTTP)是Hash方法的预定义变体,其中哈希基于客户端的IP地址。 你用ip_hash指令来设置它。

nginx proxy_pass将两个端口转换为子文件夹

所以我有我的最后一个“反向代理”问题固定关于“映射”一个端口到子文件夹再次感谢这个真棒社区。 我已经能够使用这个解决scheme了一段时间,但现在我面临一个新的问题。 情况是: 有一个网页设置(使用nginx)与此urlhttp://test.domain.com:8042/view.html 。 我需要各种各样的原因,这个端口变成一个子文件夹,并实现它(帮助),并获得http://test.domain.com/view/view.html 。 这个proxy_pass是: location ~/view(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8042$1; 这个很棒。 我可以通过http://test.domain.com/view/view.html访问该页面。 这个页面上有几个websocket,其中一个也有8042端口。这个工作正常。 但是,其他websockets有不同的端口,例如8159.我已经添加了一个相应的proxy_pass到nginxconfiguration: location ~/cantrace(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host:$server_port; proxy_pass http://test.domain.com:8159$1; 从Javascript这个websocket被称为通过 my_websocket = new WebSocket('ws://test.domain.com/cantrace/ws'); 但是这不起作用。 也没有 my_websocket = new WebSocket('ws://test.domain.com/view/cantrace/ws'); 但是,工作是什么? http://test.domain.com:8042/view.html 然后加载view.html上的其他websocket my_websocket […]

什么时候Nginx错误发生,recv()失败(110:连接超时)代理升级连接

我使用Nginx 1.10.1来为我的APP平衡Websocket连接。 例如,应用程序A (多进程)通过Nginxbuild立到B1 , B2 Websocket连接,以便连接可以平衡。 使用它时,有时即使我的应用程序通过Websocket发送消息,终点( B1或B2 )不会收到任何消息,并在一段时间后Nginx打印错误日志消息recv() failed (110: Connection timed out) while proxying upgraded connection 。 以下是我对Nginxconfiguration。 为什么会发生,如何解决? 像networking连接超时会导致这种情况? worker_processes 2; error_log /app_log/sangmin/nginx/error.log info; pid /app_log/sangmin/nginx/nginx.pid; events { worker_connections 1024; use epoll; } http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } client_body_buffer_size 5m; access_log /app_log/sangmin/nginx/access.log; upstream s2s_host{ hash […]

拥有TeamCity的WebSockets位于Amazon ELB的后面

我正在亚马逊的公共ELB背后设立TeamCity。 我正在尝试修复WebSocket连接问题: Some users cannot use optimized web UI updates via WebSocket protocol. 这是TeamCity在端口8111上的一个标准默认安装,ELB在ELB的端口443上终止HTTPS(TLS)。 我能够很好地访问TeamCity服务。 我的search出现在试图在TeamCity之前使用NGINX或Apache的人,但这不是我想要做的。 我甚至在后端启用了AWS ELB ProxyProtocol策略。 有没有一些秘密的东西让TeamCity通过ELB直接成功地使用WebSockets,HTBPS连接终止了呢? 我觉得我在这里丢失了一些东西,如果我在前面使用反向代理,文档只有帮助。

用于ws://协议的NGINX代理设置

我正在尝试设置NGINX代理networking套接字stream量。 我正在NGINX(端口80)上运行一个网页,该端口具有来自8080端口的MJPEG馈送,并且还通过端口8090接收networking套接字stream量。我可以代理MJPEGstream,但不能代理networking套接字。 在我的网页,客户端JavaScript连接正常,没有代理使用这一行: var conn = new WebSocket('ws://192.168.0.14:8989 / ws'); 代理这个我试着设置下面的NGINXconfiguration: #Proxy the Web Socket Traffic #———————————————- location /sock/ { proxy_pass ws://localhost:8989/ws; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } #Proxy the MJPEG Streamer feed #———————————————- location /mjpeg/ { proxy_pass http://localhost:8080/; } 然后将客户端JavaScript更改为以下内容: var conn = new WebSocket(' http://192.168.0.14/sock/ '); 但是当我重启NGINX的结果是: 作业nginx.service失败。 有关详细信息,请参阅“systemctl status […]

在第4层使用SSL终止的WSS负载平衡

应该可以在第4层负载均衡器上终止SSL的SSL(安全websockets)吗? 在我看来,wss(和ws)通常会需要TCP路由,因为HTTP反向代理将无法理解数据包; 而且,由于会话确实维持在第4层以上,因此SSL终止将需要第7层路由。我对第一个声明有些自信,而对第二个声明则更不感兴趣。 奖金的问题。 一般情况下,如果可以在单个负载均衡器中实现wss路由和sslterminal,那么可以专门用HAProxy来完成吗? Nginx的? 其他?

NGINX Websocket初始通信延迟

我创build了一个Django服务器,它使用Django通道进行websocket通信。 当我用NGINX运行服务器时,服务器和客户端之间的websocket通信有一个初始延迟。 在最初的延迟之后,所有丢失的数据在非常短的时间内到达,然后开始实时通信。 我已经testing了服务器的独立和没有NGINX代理只有一个达芙妮实例,并没有最初的通信延迟。 以下是我的NGINXconfiguration。 如果任何人有任何想法,为什么我会得到一个最初的10秒延迟websocket通信,将不胜感激。 worker_processes 1; events { worker_connections 1024; } http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } include mime.types; default_type application/octet-stream; #log_format main '$remote_addr – $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 0; […]

如何解决Nginx的499,当它没有返回到客户端的Web套接字握手?

在一个Kubernetes集群中,我有一个Nginx服务器,就像一个反向代理/ TLS终止解决scheme一样,代理通过一个由Web Sockets(SockJS / Stomp)支持的function的后端Tomcat应用程序的请求。 不幸的是,Web Sockets握手从未成功完成。 在客户端,在我的浏览器中,我可以在控制台中看到以下消息: Opening Web Socket… websockets-0.1.min.js:116 Whoops! Lost connection to https://myhost/stomp Opening Web Socket… websockets-0.1.min.js:116 Whoops! Lost connection to https://myhost/stomp 随后是HTTP 504 Gateway Timeout 。 websockets-0.1.min.js:72 WebSocket connection to 'wss://myhost/stomp/673/ugvpxc1lwmfjnung/websocket' failed: Error during WebSocket handshake: Unexpected response code: 504 – 在tomcat端,我在访问日志中有以下条目: 0:0:0:0:0:0:0:1,2017-06-01 16:53:36.915 +0000,4,GET,HTTP/1.1,"/stomp/673/ugvpxc1lwmfjnung/websocket",101, -,O,-,blablablabla,-,-,"Mozilla/5.0 (Macintosh; Intel Mac OS […]

proxy_pass到nginx后面的websocket

我有websocket服务器,有nginx的背后。 我需要configuration第二个nginx作为这个第一个nginx的代理。 但是,当我提出请求,有一个错误400或404(不同的configuration)。 这是我的nginx的configuration: map $http_upgrade $is_upgrade { default upgrade; '' ''; } upstream websocket { server [here_is_address]; } server { listen 80 default; location /ws/ { proxy_http_version 1.1; client_max_body_size 50m; proxy_read_timeout 60s; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $is_upgrade; proxy_pass http://websocket; } }