【问题标题】:weksocket on production server with https使用 https 的生产服务器上的 weksocket
【发布时间】:2018-09-19 13:02:03
【问题描述】:

我在这里按照这个例子 https://socket.io/get-started/chat

我现在正试图在我的生产服务器上运行它,但我碰壁了

在我的 ssh 连接中,我正在做节点 index.js 我有“正在收听*:3000”消息

然后我试图通过我的浏览器访问 index.html 使用

https://mywebsite/websocket/index.html 似乎索引正在查找 /socket.io/socket.io.js 文件,所以这部分应该没问题

但是在浏览器控制台中我有这个错误 socket.io.js:7 POST https://mywebsite.com/socket.io/?EIO=3&transport=polling&t=MNnvCry404()

我在 apache 上并且我已经激活了 https 在我的 ssh 控制台中,我应该看到用户已连接,但我没有。

【问题讨论】:

    标签: node.js websocket


    【解决方案1】:

    我已将 socketio 用于生产构建并且遇到了类似的问题。

    通过将以下代码添加到 ssl conf 文件中解决了这个问题。

    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://localhost:3000%{REQUEST_URI} [P]
    

    我在关闭 virtualhost 标记之前添加了它。

    【讨论】:

    • 嗨,Adian 感谢您的回复,当我尝试使用您的代码重新启动 apache 时,出现错误。 code=exited, status1/FAILURE 我认为我的问题是由于我在终端 curl localhost:3000/socket.io/socket.io.js 中无法访问 :3000 端口而不是使用 localhost 我可以看到该文件就好了但是当我这样做(在我的常规 chrome 浏览器中) 然后转到我有这个mywebsite.com/socket.io/socket.io.js net::ERR_ABORTED 404 的页面(未找到)
    • 即使我强制端口
    • 您能否发布您正在使用的代码的屏幕截图。
    • 我不得不更改我的 apache 配置上的一些东西,现在 http 版本正在工作,仍在尝试使 https 工作。这是屏幕截图imgur.com/a/lEPCBlq 我还必须掩盖我的密钥路径:) 但是在我的文件上它是正确的路径并且文件是可访问的
    猜你喜欢
    • 2017-01-11
    • 2016-04-25
    • 2014-05-16
    • 2012-02-19
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多