一个基本的node.js websocket服务器的实现像通过命令行或计划任务pipe理器启动时一样运行良好。 但是,在使用nssm作为服务安装之后,它拒绝启动,但出现以下exception: Windows无法启动服务…在本地计算机上。 该服务没有返回错误。 这可能是内部Windows错误或内部服务错误。 该软件不使用映射的networking驱动器,也不访问registry,在这个SO问题中 ,这两者都暗示了这种行为的可能原因。 我已经将问题追溯到websocket服务器组件中,注释掉它使得服务运行得很好。 另外,当在Windows 7和Windows 10环境中使用时,该过程可以正常工作。 当我错误地认为这个问题应该发送到服务器故障社区,随意将其移动到超级用户。 更新: 以下是引用的代码元素: 实例: let WebSocket = require('ws'); this.server = new WebSocket.Server({ port: this.port }); 这是对https://github.com/websockets/ws上提供的js库的调用
我在Ubuntu 14.04 LTS上运行Apache 2.4.7作为反向代理。 这个Apache服务器充当许多不同后端应用程序的入口点,这些应用程序可以通过<Location>块中的不同mod_proxyconfiguration来访问 我需要提供对使用WebSockets的应用程序的反向代理访问。 该应用程序是一个Java Spring应用程序,通过HTTP提供HTML和其他静态文件,然后在加载页面后使用WebSocket作为dynamic数据。 我已经使用以下configuration在Nginx后面运行应用程序: location /newapp/ { proxy_pass http://newapp.example.com:8080/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } 不幸的是,由于需要一个在Nginx上不可用的Apacheauthentication模块,我不能在生产中使用它。 我想要做的,在伪Apache的configuration是: <Location /newapp/> if not WebSockets: ProxyPass http://newapp.example.com:8080/ ProxyPassReverse / else ProxyPass ws://newapp.example.com:8080/ ProxyPassReverse / </Location> Apache的mod_proxy_wstunnel模块让我觉得这应该是可能的。 WebSocket可以通过URL /api/socket/… ,所以我尝试使用单独的<Location>块来分隔两种types的ProxyPass : <Location /newapp/> ProxyPass http://newapp.example.com:8080/ disablereuse=on ProxyPassReverse / ProxyPassReverseCookieDomain newapp.example.com apps.example.com […]
我试图通过中间服务器(托pipe在AWS EC2实例上)连接websocket服务器(linux机器)和客户机(web浏览器)。 EC2实例提供websocket服务器和客户端可以引用的公有IP。 我的客户端连接到ws://<SERVER>:<PORT> ,其中SERVER是我的EC2实例的地址, PORT是我为端口转发打开的任意端口(例如9111 )。 在websocket服务器上,我正在运行以下命令: /usr/bin/ssh -f -N -i $KEY -l ubuntu \ -R $PORT:127.0.0.1:9090 \ -L 9090:$SERVER:$PORT \ $SERVER 其中$KEY是EC2的私钥, 9090是我的websocket服务器使用的端口。 我configuration了我的EC2实例的ssh守护进程来启用网关端口,并且端口转发工作正常。 当我尝试启动我的websocket服务器时,问题来了 – 我得到一个Address already in use错误,因为显然我不能启动我转发的端口上的websocket服务器。 这不是一个相当标准的事情吗? 我究竟做错了什么? 谢谢!
我有nginx 1.6.2 wihconfiguration升级连接到websocket。 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 当没有websocket连接打开时,“service nginx stop”有效,master和worker进程都被正常停止。 killproc $prog -QUIT 但是当我打开websocket的时候,nginx不能被阻止,即使我得到: Stopping nginx: [ OK ] 我试过了 : killproc $ prog -KILL 但是正如所料,在我第一次运行命令的时候强行杀死了主控,而如果我重新执行的话,那么这个工人就会死亡。 你推荐什么强制closuresnginx? 我正在考虑用以下方法replacekillproc: pkill $ prog
我正在寻找一个系统来通过sockets.io创build一个活的套接字应用程序,并且可以平衡而没有问题。 有大量的解决scheme来平衡多个套接字实例之间的负载,如SocketCluster,但我面临的问题是,当负载平衡器决定,而不是10个实例我需要8个实例,并closures其中2,我怎么能保持这些实例的套接字连接? 试图更好地解释它,我有一个事件stream媒体公司,几乎所有的周末stream事件,但没有在两者之间。 如果我使用亚马逊EC2,我只会有一个实例,几乎有0个用户连接,但在周末亚马逊将启动一些事件,当一个事件开始stream,并将路由每个连接到不同的服务器。 我看到的问题是,当事件结束并且人们开始退出时,负载平衡器将开始closures实例,而仍然连接到这些实例的人将开始失去与聊天的连接。 我知道我可以简单地通过重新连接这个人来解决这个问题,但有可能在他们重新连接的时候丢失一些消息。 有没有一个系统,将连接路由到另一台服务器,并知道是连接到另一个实例的同一用户,而不重新连接?
我开发了一个使用AngularJS + NodeJS(与MariaDB,Redis和Socket.io一起用于实时通知)的应用程序,并且我已经将它部署在单个Linode节点上。 现在我想组织架构,以便在未来stream量增加的情况下轻松扩展应用。 所以我的想法是准备一切如下: 1个Linode LoadBalancer服务器将成为主要点,并将redirect来自用户的请求 1 Linode节点服务器,我将安装Nginx,充当反向代理,redirect到同一节点中的NodeJS服务器 1个用于MariaDB和Redis服务器的Linode节点服务器 所以当我需要扩展时,我用Nginx + NodeJS添加一个新的节点。 对于MariaDB + Redis,我将设置两者的集群(我使用Redis作为会话,MariaDB作为数据)。 现在我的疑惑是: 什么是应用程序的适当架构? 我应该在哪里应用LoadBalancer或每个节点上的AngularJS应用程序? 我需要nginx充当每个节点上的反向代理吗? 谢谢!
我有个问题。 Apache监听一个白色的ip,并将代理请求/城市仪表板上的所有请求/ ssd代理到另一个带有websocket的服务器。 在Apacheconfiguration中: ProxyPass /ssd/ http://10.127.32.24 ProxyPassReverse /ssd/ http://10.127.32.24 nginxconfiguration:在nginx.conf: map $http_upgrade $connection_upgrade { default upgrade; '' close; } include /etc/nginx/conf.d/*.conf; 在default.conf location /city-dashboard/stream { proxy_pass http://10.127.32.24:5000/stream; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } 请求标题: GET ws://xxxx/ssd/city-dashboard/stream HTTP/1.1 Host: xxxx Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Origin: […]
我正在尝试使用html 5 websockets连接到我的websocket服务器。 直接连接工作正常,但是当我试图隐藏我的服务器后面的Apache代理不起作用。 它结束了: var ws = new WebSocket("wss://www.example.com/generator/wss/"); undefined WebSocket connection to 'wss://www.example.com/generator/wss/' failed: Error during WebSocket handshake: Invalid status line 但如果我直接连接到wss://www.example.com:9002,那么它的工作原理… 这是我的apacheconfiguration: <VirtualHost *:80> ServerName www.example.com ServerAdmin [email protected] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Redirect permanent / https://www.example.com/ </VirtualHost> <VirtualHost *:443> ServerName www.example.com ServerAdmin [email protected] SetEnv EXAMPLE_SERVER_ENVIROMENT production SSLEngine on SSLProtocol all -SSLv2 […]
这可能是一个真正的初学者问题,但我真的想确保在投入时间之前,我正朝着正确的方向前进。 下面是我的。 charlieli.me @ 45.55.33.185:80 fileserver.charlieli.me @ 45.55.33.185:80 fileserver.conf <VirtualHost *:80> ServerName fileserver.charlieli.me ServerAdmin [email protected] ServerAlias fileserver.charlieli.me DocumentRoot /var/www/fileserver <Directory /var/www/fileserver> # enable the .htaccess rewrites AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error_orlybg.log CustomLog ${APACHE_LOG_DIR}/access_orlybg.log combined </VirtualHost> 我的主域的虚拟主机是45.55.33.185端口80,我的子域fileserver.charlieli.me也configuration为45.55.33.185端口80。 在我的子域,我想打开一个Web套接字发送文件远程存储和检索。 在我的登陆网站的configuration,它的configuration为80端口,这是否意味着我必须通过端口80听/接收/响应,或者我可以指定另一个端口像9090顶部打开我的websocket程序并从文件服务器接收数据.charlieli.me:9090? 在我的configuration文件中的“虚拟主机”地址是否真的意味着我的主要和子域是真的共享相同的一组端口,我可以访问我的9090端口,即使从charlieli.me:9090渲染子域是多余的?
我正在使用我的apache作为一个反向代理服务器的一些内部端口上运行的Web服务器的请求,以允许通过我的常规虚拟主机访问。 这是一个在stream浪汉中运行的Ubuntu 15。 这是我的虚拟主机configuration: <VirtualHost *:80> DocumentRoot /vagrant/htdocs ServerName test.vm # proxy pass mailcatcher to internal webserver <Location /mailcatcher> ProxyPass http://localhost:1080 ProxyPassReverse http://localhost:1080 </Location> <Location /assets> ProxyPass http://localhost:1080/assets </Location> <Location /messages> ProxyPass ws://localhost:1080/messages ProxyPassReverse http://localhost:1080 </Location> <Directory /> Require all granted </Directory> <Directory /vagrant/htdocs> AllowOverride all </Directory> </VirtualHost> 有一段时间,这工作正常。 但是,一段时间后,突然将所有对此虚拟主机的请求代理到内部networking服务器。 所以,如果我首先调用http://test.vm/cron/mails.php ,它将按预期运行mails.php 。 然而,经过一段随机的时间或事件之后,突然之间,上述的URL将会开始为Mailcatcher提供响应。 您正在查找的消息不存在,或者没有此类内容 […]