Articles of socket.io

HAProxy + Socket.IO + TornadIO在心跳上断开连接

所以,我在使用HAProxy在端口8888上负载平衡socket.io时遇到了问题。 我的设置是在端口80上监听的NGINX,以及在端口80上运行的Tornado Web服务器实例之间的负载均衡。然后,在同一负载均衡器上,我有一个HAProxy实例侦听端口8888,将请求转发到托pipeTornadIO的networking中的其他计算机服务器实例也在8888上运行。连接在大约前30秒左右工作,然后开始反复断开/重新连接。 重要的是要注意的是,它似乎在第一次心跳尝试中断了……心跳是HAProxy会遇到的与第一次连接尝试/首先几个消息交换相对的不同协议的心跳。 有趣的是,当tornadIO实例与负载均衡器运行在同一台计算机上时,即使使用HAProxy工作(但是连接端口8888并且可以在端口9000上指定tornadIO实例),也不会发生这种情况。 需要注意的是TornadIO不会在整个过程中抛出任何exception或输出任何不正常的结果,显示它不是我的服务器代码,而是代理层中的东西。 让我们也知道,我正在使用RabbitMQ同步所有TonadIO群集,不是我认为这很重要(和HAProxy不接触兔子) 这是我的HAProxy设置: global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms listen http-in balance roundrobin option forwardfor # This sets X-Forwarded-For timeout queue 5000 timeout server 86400000 timeout connect 86400000 bind *:8888 server server1 18.181.3.164:8888 # ether1 在我的nginxconfiguration中,我插入了: location ~* \.(eot|ttf|woff)$ { […]

WebSocket连接到'ws://…/socket.io/'失败:在WebSocket握手期间出错:net :: ERR_CONNECTION_RESET

我正在使用nginx和代理到我的应用程序,它使用node.js上的socket.io作为websocket连接。 当通过域访问应用程序时,出现上述错误。 我已经根据https://github.com/socketio/socket.io/issues/1942configuration了nginx,以确保websockets被正确代理到node.js后端。 我的nginxconfiguration如下: server { listen 80; server_name domain.com; location / { proxy_pass http://xxx.xx.xx.xx:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } 在我的反应客户端中,我以这种方式启动websocket连接: import io from 'socket.io-client'; componentWillMount() { this.socket = io(); this.socket.on('data', (data) => { this.state.output.push(data); this.setState(this.state); }); } 任何build议表示赞赏! 编辑1: 经过更多的调查。 我的服务器设置如下: 可从互联网访问的域名:web-facing.domain.com 可从Intranet访问的域:internal.domain.com 当我从内联网访问应用程序时,它工作正常,但从互联网访问时得到错误。 […]

AWS EB:在WebSocket握手期间出错:意外的响应代码:400

在AWS上托pipe的Laravel / Vue.JS应用程序位于经典负载均衡器(Elastic Beanstalk)之后,并通过Nginx内部代理到socket.io服务器。 SSL在Nginx上终止。 这是nginxconfiguration: location /socket.io { proxy_pass http://127.0.0.1:6001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 现在长轮询模式工作正常,但它没有启动升级: WebSocket连接到'wss://example.com/socket.io/?EIO = 3&transport = websocket&sid = HmDFtq-aj1WgfGUyAAAJ'失败:WebSocket握手期间出错:意外的响应代码:400 PS铬的Frames选项卡我只能看到这个奇怪的消息:( (Opcode -1) 有没有人成功地获得了在AWS Elastic Beanstalk环境中工作的socket.io? 我只是浪费了两个星期处理这个问题,非常感谢任何build议或想法。 谢谢! 更新。 我打开了一个详细的日志logging,这里是Nginx的variables: $host example.com $proxy_add_x_forwarded_for 134.xxx.xxx.xxx $http_upgrade […]

如何使用https在生产服务器上使用Laravel Echo

我想知道什么是在https生产服务器上设置Laravel Echo的正确方法(或任何其他方法)。 现在我已经在当地的stream浪者身上工作了一段时间,现在我已经将更改推向了生产环境,我无法使脚本连接到节点服务器。 这是我目前有的。 var echo = require('laravel-echo-server'); var options = { host: 'https://localhost', port: '6001', sslCertPath: '/etc/nginx/ssl/nginx.crt', sslKeyPath: '/etc/nginx/ssl/nginx.key' }; echo.run(options); 然后在JavaScript中 import Echo from "laravel-echo" window.echo = new Echo({ broadcaster: 'socket.io', host: 'https://localhost:6001' }); 上面的configuration是我开始的,但是我尝试了很多其他的组合,包括试图编辑nginxconfiguration来绕过https。 如果绕过https是需要的方法,任何关于如何使用Laravel Echo做这个build议将不胜感激,因为我一直引用的这个主题的socket.io线程似乎并没有为我做伎俩。

Node.JS,HAproxy和Socket.IO通过NGINX,应用程序位于子目录中

我一直在尝试几个小时,并已阅读本网站和互联网提供什么。 我似乎不能让Socket.IO在这里正常工作。 我知道nginx默认不能处理Socket.IO,但是,HAproxy可以。 我希望nginx通过unix套接字来服务Node应用程序,这很好。 每个人都有一个由nginx设置的子目录位置,但是,现在我需要Socket.IO为最后的应用程序,我现在在configuration丢失。 我有最新的socket.io,HAproxy 1.4.8和nginx 1.2.1。 运行Ubuntu。 所以重申,我需要通过nginx将socket.io工作到子目录中的节点应用程序,例如:localhost / app /。 Diagram: WEB => HAproxy => Nginx => {/app1 app1, /app2 app2, /app3 app3} 让我现在如果我能提供任何其他的东西!

将从Nginx到Socket.io的Websocketstream量(不使用SSL)

截至昨天nginx开始支持websocket连接,因此我试图让我的nginx-nodejs-socket.io应用程序没有harproxy等工作(虽然没有太多的运气)。 我想要达到的是nginx只发送websocket连接请求到支持的服务器,或websocket服务器,socket.io更确切,而在同一时间nginx将服务的PHP文件,所有的静态内容, 包括HTML文件 。我不想快递服务的静态内容(如果这是可能的话)。 这是我的nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { 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; […]

websocket无法连接到ec2与nginx

我在EC2上运行node.js和socket.io,使用nginx v1.4.1 这是我的/ etc / nginx / sites-available / default map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name mysite.com; location / { proxy_pass http://localhost:4321; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } 但是我得到WebSocket connection to 'ws://mysite.com/socket.io/1/websocket/nS7f2eI5jAZ-pIN_8fai' failed: Unexpected response code: 502 并从节点: debug – […]

上游超时错误在nginx + socket.io +代理+ ssl

我想我几乎没有想法。 一直试图解决所有的答案和所有的博客,但仍然运气不佳。 这是我想要做的。 我有一个运行在某个端口的socket.io的nodejs服务器,并希望使用nginx从端口80进行代理传递。 条件是我的应用程序仍然工作,并成功通过socket.io发送请求,另一个客户端收到它。 但事情是我不断得到“上游超时”的错误,并有很多。 这是我经过很多改变后的当前nginx设置: upstream node_server.com { server 127.0.0.1:3002 max_fails=0 fail_timeout=10s; keepalive 512; } server { listen 443; client_max_body_size 16M; keepalive_timeout 10; ssl on; ssl_certificate my.crt; ssl_certificate_key my.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; server_name my_domain.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header […]

Socket.io + nginx + SSL = * 31上游过早closures连接

我试图运行一个Node.js服务器(与socket.io)作为我的主要应用程序的pub / sub服务器。 我把它推到服务器上,并创build一个子域(使用SSL)。 我的客户端HTML页面可以加载socket.io/socket.io.js ,但WSS握手不按预期工作: WebSocket connection to 'wss://ws.example.com/socket.io/?EIO=3&transport=websocket&sid=ogEegJXhjFh5lplgAAAF' failed: Error during WebSocket handshake: Unexpected response code: 502 我有一个在我的nginx中定义的SSL子域是这样的: server { listen 80; listen 443 default ssl; server_name ws.example.com; # ssl on; ssl_certificate /etc/nginx/certificates/certificate-ws-example-com.crt; ssl_certificate_key /etc/nginx/certificates/ws.example.com.key; # Redirect all non-SSL traffic to SSL. if ($ssl_protocol = "") { rewrite ^ https://$host$request_uri? permanent; } location […]

将pm2的群集模块与socket.io和socket.io-redis一起使用

我正在尝试使pm2集群模块与socketio一起工作,但是当我访问/ hello时遇到错误。 由于集群利用了所有的CPU内核,socketio会感到困惑,所以我安装了socket.io-redis模块来处理这个问题 ,但是看起来它根本没有做任何与Redis(它是空的)或者socket.io ,我可能错过了一些非常明显的东西。 我使用Nginx作为Web服务器,而我的快速服务器localhost:8000指向localhost:80。 支票: Nginx的作品, http:// localhost / hello返回socketio的响应,我在浏览器控制台上看到它。 Redis实例处于打开状态 它工作,如果我启动我的服务器npm start而不使用群集,但sudo pm2 start bin/www -i 0在问题的底部产生的错误。 BACKEND 这是我的nginx.conf user myusernameishere staff; worker_processes 1; server { listen 80; server_name localhost; location / { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://localhost:8000; } } app.js […]