Articles of websocket

TCP在没有Internet的情况下使用Websocket重新连接到未知地址

我已经使用ProcMon.exe来查看当没有互联网时我的应用程序会发生什么。 我的应用程序是一个electron应用程序,利用websocket连接到后端服务驻留在其他计算机上。 仅供参考,websocket地址的示例是ws://10.5.14.72:8080/Model 。 AFAIK,来自websocket的HTTP请求将通过代理服务器,如果有一个存在(请纠正我,我错了)。 仅供参考,当没有互联网,应用程序反应非常缓慢,因为它不断重新连接到一些未知的地址,如ProcMon.exe所示,我相信是代理,但我找不到在internet options 。 以下是详细信息: TCP Reconnect xxxx:50074 -> 203.208.39.198:https SUCCESS TCP Reconnect xxxx:50075 -> 203.208.39.198:https SUCCESS TCP Reconnect xxxx:50077 -> 203.208.39.199:https SUCCESS TCP Reconnect xxxx:50078 -> 203.208.39.199:https SUCCESS TCP Reconnect xxxx:50077 -> 203.208.39.199:https SUCCESS TCP Reconnect xxxx:50078 -> 203.208.39.199:https SUCCESS TCP Reconnect xxxx:50080 -> 203.208.39.193:https SUCCESS TCP Reconnect xxxx:50081 -> […]

nginx:未知指令“<上游”

我将nginxconfiguration为反向代理。 我有我的nginx.conf中的以下内容: user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip off; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } mail { server […]

Web应用程序无法连接到WebSocket服务器

我有一个运行在端口3000上的HTTP服务器上的web应用程序。这个应用程序连接到端口9001上的websocket服务器.WS和HTTP服务器都位于同一个VM内。 在本地testing应用程序(在VM内部)时,一切正常。 Web应用程序和WS服务器都可以相互通信。 应用程序和服务器都在本地主机上监听连接,如下所示: Web应用程序(ReactJS): const sock = new WebSocket('ws://localhost:9001/'); WS Server(Python): ws = WebsocketServer(host='127.0.0.1', port=9001) 当将其设置为允许外部连接时,Web应用程序和WS服务器不能再进行通信。 服务器仍然监听host='127.0.0.1'上的连接。 Web应用程序前端代码被更改为连接到虚拟机运行的机器(比如123.45.67.890 ): Web应用程序(ReactJS): const sock = new WebSocket('ws://123.45.67.890:9001/'); 我为端口3000和9001启用端口转发,并从VM内部的两个端口上禁用防火墙。 这两个端口在主机上都是打开的。 我可以使用123.45.67.890:3000从外部访问Web应用程序,所以我很确定与虚拟机的连接是打开的。 但是,Web应用程序不会与端口9001上的WS服务器通信。任何想法可能是什么原因? 以防万一OS信息是有帮助的: VM主机: Microsoft Windows 7 Enterprise (6.1.7601 Service Pack 1 Build 7601) VM Guest: CentOS Linux release 7.4.1708 (Core)

“run”命令的docker容器端口转发行为(对于websockets)

我正在Docker容器中运行一个ipython笔记本服务器。 从浏览器运行在笔记本内部的代码在websocket上运行,websocket必须从容器外部(浏览器)连接到内部运行的龙卷风服务器。 我注意到,当我用docker run命令直接启动笔记本服务器时 $ docker run -p 9000:9000 username/image ipython notebook –port=9000 –ip="*" 我无法获得连接(ipython笔记本内核连接超时)。 当我在Docker容器中启动一个shell并且在容器中运行相同的命令时,连接完美地工作: $ docker run -it -p 9000:9000 username/image /bin/bash $ ipython notebook –port=9000 –ip="*" # inside docker image 在这两种情况下,ipython服务器日志都包含类似的条目 Connecting to: tcp://127.0.0.1:39946 为websocket连接。 这使脚本和自动运行容器变得更加困难。 我能做些什么来获得和第二种情况下一样的行为来run图像?

我如何使用Nginx来保护不安全的meteor?

我在AWS上运行一个不安全的Meteor。 对于那些不熟悉Meteor的人来说,这意味着我正在使用“不安全”的软件包,这个软件包用于快速原型开发。 我只需要我们的开发团队和利益相关者访问服务器。 过去,我通过在防火墙上列出每个人的IP地址来解决这个问题。 现在这个团队有点大,收集每个人的IP地址可能很难做到。 所以我想用Nginx来密码保护Meteor。 我知道如何密码保护的HTML; 但meteor使用Websockets,我完全不熟悉。 我如何密码保护websockets?

请求头中基于http://或ws://的反向代理请求

从以前提出的问题中,我知道我可以将请求路由到具有反向代理的不同服务器,例如apache的mod_proxy。 我的问题是,在我深入了解它的设置之前,哪个反向代理将允许我根据请求头中的HTTP或ws做出路由决定。 因此,例如,我希望所有进入https://example.com请求都被路由到lanserver:443,而请求将与wss://example.com进行代理,并被路由到web socket端点lanserver:8443。 这将是可能的mod_proxy? 还是其他的Linux代理? 谢谢。

通过WSS的SIP.js连接到Asterisk 11.20不起作用

我已经成功地设置sip.js使用标准的非安全ws:/ /使用firefox 43星号11服务器。我可以打电话给另一个ff浏览器/硬件。 但是这并不适用于最新的铬合金,铬47,我无法得到任何audio(铬没有问我想用哪个audio,它总是被困在“获取当地媒体”)。 sip-0.7.2.min.js:36 Sat Jan 16 2016 15:02:05 GMT-0500 (EST) | sip.invitecontext.mediahandler | acquiring local media 从我读的关于铬47, https://developers.google.com/web/updates/2015/10/chrome-47-webrtc?hl=en 从Chrome 47开始,getUserMedia()请求只允许来自安全的来源:HTTPS或localhost。 所以我想configuration星号和sipjs开始使用安全的websockets(wss),并与wss连接有问题。 铬控制台输出如下: sip-0.7.2.min.js:36 Sat Jan 16 2016 14:17:01 GMT-0500 (EST) | sip.ua | configuration parameters after validation: 2016-01-16 14:17:01.816 sip-0.7.2.min.js:36 Sat Jan 16 2016 14:17:01 GMT-0500 (EST) | sip.ua | · viaHost: "192.0.2.190" […]

如何在AWS负载均衡器后面运行Parse Live Query Server(Web套接字)?

ParseLiveQuery依赖于Websockets。 更一般地说,这个问题可能是让Web套接字在AWS ELB后面工作。 我正在使用Elastic Beanstalk(EB)在AWS中configuration的新Parse Server。 EB在Load Balancer后面configuration了一个EC2实例,我们需要自动扩展才能工作。 分析服务器工作得很好。 我正在configuration我们的服务器来使用使用WebSocket的新的Parse Live Query实现。 本地我有一切工作。 如果我将LiveQueryClient直接连接到我们的一个ParseServer实例的公有DNS,我的iOS客户端应用程序将连接并工作。 例如http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com 但是,我不太了解,为什么我们的LiveQuery代码无法通过Load Balancer DNS条目工作。 例如http://parseserver-xxxxxx-env.us-east-1.elasticbeanstalk.com 我得到一个404错误,如果我把客户端指向负载均衡器: Error Domain=SRWebSocketErrorDomain Code=2132 "received bad response code from server 404"

无法通过wss连接到服务器

我将下面的nginx.conf文件设置为处理http和https。 我目前正在使用自签名证书来testingssl。 server { listen 80; listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; location / { proxy_pass http://node:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /socketcluster/ { proxy_pass http://node:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } 当我尝试通过本地连接。 http,https&ws://似乎工作正常。 但是,当客户端尝试通过wss://连接时。 我得到下面的错误 WebSocket connection to 'wss://localhost:80/socketcluster/' […]

Apache2:代理从https到http安全

我很新的服务器的东西,我有一个关于Apache代理的安全问题。 我正在做的是:我有一个websocket服务器运行在同一系统上的端口11221上的非安全模式(仅本地,但与Apache,这是一个不同的应用程序)。 在我的apache中,我使用该服务器的代理创build了一个configuration: ServerName websocket.example.com SSLCertificateFile /path/to/fullchain.pem SSLCertificateKeyFile /path/to/privkey.pem ProxyPass / ws://localhost:11221/ ProxyPassReverse / ws://localhost:11221/ 这个组合完美地工作,我可以连接使用一个安全的 websocket连接到服务器(使用wss://websocket.example.com )。 我检查了我无法直接连接到它。 ws://websocket.example.com:11221将失败,连接被拒绝(按预期)。 我现在的问题是:这是安全的吗? 即使在链接到websocket协议后,即使连接保持encryption? 据我的研究所了解,它确实保持encryption,但我找不到明确的答案。