websockets的相对路径

 jzb5485414 发布于 2023-02-04 14:10

我在windows server 2012 r2中成功安装了Apache2.2.22和nodejs 0.10.12.

我使用nssm成功地使节点成为Windows服务,因此它将始终运行.

节点"住"在8000端口,我在Apache的安装代理httpd.conf,像这样

ProxyPass /nodejs http://localhost:8000
ProxyPassReverse /nodejs http://localhost:8000

当我在服务器的浏览器中检查我的网站时,websockets工作正常.

当我在笔记本电脑浏览器中查看我的网站时,我收到错误消息.

我想这是因为我创建像这样的websockets

 var ci = new WebSocket("ws://localhost:8000");

这就是为什么在服务器上工作,而不是在笔记本电脑上.因为localhost.首先,我是对的吗?

第二.唯一的问题是,我不知道如何为websockets创建相对路径.我尝试了不同的语法,但没有运气.拜托,有人可以告诉我怎么做,并向我解释一下吗?

提前致谢.

编辑:我没有设置Windows Server 2012 R2.一位同事做了.我刚上传了这个网站.我在Windows防火墙中制作了入站规则,因此端口8000已打开.另外,一个用于端口80(用于Apache).我试过像robertklep建议的东西,没有运气.也许是OS的问题?(安全限制?)

里面httpd.conf我也有

 ProxyPass /geoserver http://localhost:8080/geoserver
 ProxyPassReverse /geoserver http://localhost:8080/geoserver

它在节点的代理之前.它关于Geoserver和8080端口,它也有一个入站规则.工作得很好.

节点仅在本地工作(具有localhostURL).在本地,如果我删除Proxy线httpd.conf,仍然有效.

我不知道如何安装/配置proxy_wstunnel_module.而且我不确定我是否需要它.

我尽力而为,请建议

谢谢

1 个回答
  • 第一:是的,你是对的.

    第二:我认为WebSocket URL始终必须是绝对的.要动态确定该URL,您可以使用以下内容:

    var ci = new WebSocket('ws://' + location.hostname + ':8000');
    

    我假设您没有在端口8000上使用节点服务器来提供HTML文件.如果你是,这可能也有效(并且有点短):

    var ci = new WebSocket('ws://' + location.host);
    

    2023-02-04 14:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有